| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
 Reworld，下班在家制作游戏，1500万奖金等你拿 以码会友 以友辅仁

问题点数：0  回复次数：3

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：
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

得分:0

#include<stdio.h>
#include<string.h>
int main(void)
{
int  a,i, j, k, h = 0;
first:while (scanf("%d", &a),a!=0)
{

char pnumber[a][20];
for (i = 0; i < a; i++)
gets(pnumber[i]);
for (i = 0; i < a-1; i++)
for (j = i + 1; j < a; j++)
{
k = 0;
while (pnumber[i][k] == pnumber[j][k] && h < strlen(pnumber[i]))
{
k++;
h++;
}
if (h == strlen(pnumber[i]))
{
printf("NO");
goto first;
}
}
printf("YES");
}
return 0;
}

得分:0

得分:0

• 4
• 1/1页
• 1