题目大意:输入一些号码,判断是否有一些号码为其他号码的子号码(一个号码的前面子号码长度的内容为子号码)
解题思路:两个循环,全部都互相对比一次。两个号码可能一样长。
ac代码:
#include <iostream>
#include <cstring>
using namespace std;
int cnt, coun=1, len1, len2, jud;
char a[1005][1005], c[1005];
int main()
{
while (scanf("%s", a[0])!=EOF){
cnt = jud = 1;
while (strcmp(a[cnt-1], "9"))
scanf("%s", a[cnt++]);
cnt--;
for (int i=0; i<cnt; i++)
for (int j=0; j<cnt; j++)
if (i != j){
len1 = strlen(a[i]);
len2 = strlen(a[j]);
memset(c, 0, sizeof(c));
if (len2 >= len1)
for (int k=0; k<len1; k++)
c[k] = a[j][k];
if (!strcmp(c, a[i]))
jud = 0;
}
if (jud)
printf("Set %d is immediately decodable\n", coun++);
else
printf("Set %d is not immediately decodable\n", coun++);
}
return 0;
}