zoj 2876 Phone List

题意:给出几个字符窜,判断是否某个字符窜包含另一个字符窜为前缀,则输出NO(注意NO是大写),否则输出YES(注意是大写,大写)

#include<stdio.h>  
#include<string.h>  
#include<algorithm>  
using namespace std;  
struct Node  
{  
    char nam[100];  
    int len;  
}node[10100];  
    
bool cmp(Node p1,Node p2)  
{  
    return strcmp(p1.nam,p2.nam)<0;  
}  
    
int main()  
{  
    int T,n,t,i,j,flag=0;  
    char str[100];  
    scanf("%d",&T);  
    while(T--)  
    {  
        flag=0;  
        scanf("%d",&n);  
        for (i=0;i<n;i++)  
         {  
             scanf("%s",node[i].nam);  
             node[i].len=strlen(node[i].nam);  
         }  
         sort(node,node+n,cmp);  
         for (i=1;i<n;i++)  
         {  
             for (t=0;node[i].nam[t];t++)  
             {  
                 if(node[i].nam[t]!=node[i-1].nam[t]) break;  
             }  
             if(t==node[i-1].len) break;  
         }  
         if(i!=n) printf("NO\n");  
         else printf("YES\n");  
    }  
    return 0;  
}  

 

posted @ 2012-06-05 22:13  calmound  阅读(263)  评论(0编辑  收藏  举报