NEFU 659

//今天刚写的代码,有可能不是很简洁,但是刚开始嘛,不能像那些大牛是的那么厉害的,如果写的不好,请多多包涵。。。

description

 
We know that if a phone number A is another phone number B’s prefix, B is not able to be called. For an example, A is 123 while B is 12345, after pressing 123, we call A, and not able to call B.
Given N phone numbers, your task is to find whether there exits two numbers A and B that A is B’s prefix.

input

 
Input
The input consists of several test cases.
The first line of input in each test case contains one integer N (0 < N < 1001), represent the number of phone numbers.
The next line contains N integers, describing the phone numbers.
The last case is followed by a line containing one zero.

output

 
For each test case, if there exits a phone number that cannot be called, print “NO”, otherwise print “YES” instead.

sample_input

 
2
012
012345
2
12
012345
0

sample_output

 
NO
YES

#include
#include
#include
using namespace std;
struct sa
{
char st[1000];
int l;
}data[1005];
int main()
{
int m;
while(~scanf("%d",&m)&&m!=0)
{
int flag=0;
for(int i=0;i {
scanf("%s",data[i].st);
data[i].l=strlen(data[i].st);
}
for(int i=0;i {
for(int j=i+1;j {
int k=0;
while(1)
{

if(data[i].st[k]==data[j].st[k])
k++;
else
break;
if(k==data[i].l)
flag=1;
}
k=0;
}
}
if(flag==0)cout<<"YES"< else cout<<"NO"< }
return 0;
}



你可能感兴趣的:(NEFU 659)