• HDU1671 Phone List 暴力版 + 字典树


      该题就是判定一个所给定串集中是否有某些串是另外一些串的前缀串的问题。字典树的话很好办只要判定在构建一个串的路径中是否已经有的节点被标记(此处有串结尾)和如果一个串在该处结尾,那么是否它的的孩子都为空。

      这里写了一个暴力版,即现将所给定的所有数字用long long型存储起来,再按从小到大的顺序进行排序,之后再判定一个字符串以及它的依次去掉末位的子串是否已经存在,如果存在则输出NO,否则输出YES。在这里有一个如果不做一些处理的话是会WA的,那就是在每个数组之前加上一个1,这样使的串中的前导零有意义。

      代码如下:

     1 #include <cstring>
    2 #include <cstdlib>
    3 #include <cstdio>
    4 #include <map>
    5 using namespace std;
    6
    7 long long rec[10005];
    8
    9 void getstr( char *s )
    10 {
    11 char c;
    12 int cnt = 1;
    13 while( c = getchar(), c < '0' || c > '9' ) ;
    14 s[cnt++] = c;
    15 while( c = getchar(), c != '\n' )
    16 s[cnt++] = c;
    17 s[cnt] = '\0';
    18 }
    19
    20 void getlonglong( long long &x )
    21 {
    22 x = 1; // 初始化为1
    23 char c;
    24 while( c = getchar(), c < '0' || c > '9' ) ;
    25 x = x * 10 + c - '0';
    26 while( c = getchar(), c >= '0' && c <= '9' )
    27 x = x * 10 + c - '0';
    28 }
    29
    30 int cmp( const void *a, const void *b )
    31 {
    32 return *( long long * )a - *( long long * )b;
    33 }
    34
    35 int main()
    36 {
    37 int T;
    38 scanf( "%d", &T );
    39 while( T-- )
    40 {
    41 map<long long, bool>mp;
    42 int N, flag = 0;
    43 scanf( "%d", &N );
    44 for( int i = 0; i < N; ++i )
    45 {
    46 getlonglong( rec[i] );
    47 }
    48 qsort( rec, N, sizeof( rec[0] ), cmp );
    49 for( int i = 0; i < N; ++i )
    50 {
    51 long long x = rec[i];
    52 if( mp.count( x ) == 0 )
    53 mp[x] = true;
    54 else
    55 {
    56 flag = 1;
    57 break;
    58 }
    59 x /= 10;
    60 while( x > 1 && !flag )
    61 {
    62 if( mp.count( x ) == 0 )
    63 {
    64 x /= 10;
    65 }
    66 else
    67 {
    68 flag = 1;
    69 break;
    70 }
    71 }
    72 }
    73 printf( flag ? "NO\n" : "YES\n" );
    74 }
    75 return 0;
    76 }

      

  • 相关阅读:
    跑Java -jar somefile.jar时会发生什么(一个)
    Java 多线程编程两个简单的例子
    Unity3D合并着色器
    HDU
    逆元方法
    仿联想商城laravel实战---3、前端页面搭建(什么情况下需要路由接参数)
    英语发音规则---字母组合oo的发音规律
    仿联想商城laravel实战---2、后端页面搭建(验证码如何在页面中使用)
    仿联想商城laravel实战---1、仿联想商城需求和数据库设计(lavarel如何搭建项目)
    Linux课程---11、Linux中软件安装和调试
  • 原文地址:https://www.cnblogs.com/Lyush/p/2165858.html
Copyright © 2020-2023  润新知