# NEFU 659

1. 云栖社区>
2. 博客>
3. 正文

## NEFU 659

angel_imp 2015-05-09 21:25:00 浏览595

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

# 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 &lt; N &lt; 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.`

```2
012
012345
2
12
012345
0
```

# sample_output

```NO
YES
```

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
struct sa
{
char st;
int l;
}data;
int main()
{
int m;
while(~scanf("%d",&m)&&m!=0)
{
int flag=0;
for(int i=0;i<m;i++)
{
scanf("%s",data[i].st);
data[i].l=strlen(data[i].st);
}
for(int i=0;i<m;i++)
{
for(int j=i+1;j<m;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"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}

﻿﻿