首页 > 其他 > 详细

HDU 1671 Phone List(字符处理)

时间:2014-08-13 18:14:47      阅读:367      评论:0      收藏:0      [点我收藏+]

题目

 

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

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

 

 

bubuko.com,布布扣
//去你妹的一直有问题的字典树!!!

////字典树,树的根是空的
//
////#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\n");
//        else printf("YES\n");
//    }
//    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\n");
        else printf("NO\n");
    }
    return 0;
}
View Code

 

HDU 1671 Phone List(字符处理),布布扣,bubuko.com

HDU 1671 Phone List(字符处理)

原文:http://www.cnblogs.com/laiba2004/p/3910443.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!