zoukankan      html  css  js  c++  java
  • HDU 1671 Phone List(字符处理)

    题目

    用字典树可以过,可是我写的字典树一直各种错误,,,

    所以,我用了别的更简便的方法、、

    //去你妹的一直有问题的字典树!!!
    
    ////字典树,树的根是空的
    //
    ////#include<iostream>
    //#include<cstdio>
    ////#include<list>
    //#include<algorithm>
    //#include<cstring>
    ////#include<string>
    ////#include<queue>
    ////#include<stack>
    ////#include<map>
    ////#include<vector>
    ////#include<cmath>
    ////#include<memory.h>//原来G++里面没有这个库
    ////#include<set>
    //using namespace std;
    ////#define ll __int64
    //int pos;
    //struct tt
    //{
    //    int arr[15],val;//val 记录数目的
    //}a[900010];//用数组模拟,总会遇上内存或大或小的情况。。。。
    //
    //void insert(char *s,int id,int d,int len)
    //{
    //    if(d==len)return ;
    //
    //    int t=s[d]-'0';
    //    if(a[id].arr[t]==0)
    //        a[id].arr[t]=++pos;
    //    id=a[id].arr[t];//这样子,第一个(0)就是空的,相当于所有值都往后移了一位
    //    a[id].val++;
    //    insert(s,id,d+1,len);
    //}
    //
    //bool search(char *s,int id)
    //{
    //    int len=strlen(s);
    //    for(int i=0;i<len;i++)
    //    {
    //        int t=s[i]-'0';
    //        //因为一定能找到一个(就是它本身),所以不需要if
    //        //    if(a[id].arr[t]==-1)return 0;
    //        //    else 
    //        id = a[id].arr[t];
    //    }
    //    //除了本身前缀,还有至少一个
    //    if(a[id].val>1)return 1;//为了便于这边找值,所以字典树建树的时候,第一个(也就是0)要空出来
    //    return 0;
    //}
    //
    //int main()
    //{
    //    int t;
    //    scanf("%d",&t);
    //    while(t--)
    //    {
    //        int n;
    //        scanf("%d",&n);
    //        int pos=0;
    //        memset(a,0,sizeof(a));
    //        char s[10010][15];
    //        for(int i=0;i<n;i++)
    //        {
    //            scanf("%s",s[i]);
    //            int len=strlen(s[i]);
    //            insert(s[i],0,0,len);
    //        }
    //        int flag=0;
    //        n--;
    //        for(int i=0;i<n;i++)
    //        {
    //            if(search(s[i],0))
    //            {
    //                flag=1;
    //                break;
    //            }
    //        }
    //        if(flag==1)printf("NO
    ");
    //        else printf("YES
    ");
    //    }
    //    return 0;
    //}
    //
    
    
    
    //我用别的方法做了,你妹妹的
    //吃饭前若能过了,,,,我就去吃饭
    
    #include<iostream>
    #include<string>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int t,n;
        string s[10010];
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                cin>>s[i];
            }
            sort(s,s+n);//排序之后,若有前缀关系,则前一个一定是后一个的前缀
            int flag=1;
            for(int i=1;i<n;i++)
            {
                int len=s[i-1].length();
                string ss(s[i],0,len);//C++中string的操作:复制函数:s[i]的 0~j 位复制给ss
                if(ss==s[i-1])
                {
                    flag=0;break;
                }
            }
            if(flag)printf("YES
    ");
            else printf("NO
    ");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Oracle查看所有表空间使用情况
    Oracle版本信息查看
    Windows 7关闭和开启系统休眠
    ORACLE 创建表空间
    sp_helpdb使用
    SQL SERVER的数据类型
    博客园开通啦
    http keep alive
    android开发学习
    http与html
  • 原文地址:https://www.cnblogs.com/laiba2004/p/3910443.html
Copyright © 2011-2022 走看看