题目大意:判断有的字符串是不是别的字符串的前缀
解题思路:暴力判断下去
#include<cstdio>
#include<cstring>
int main() {
char str[100][100];
int num = 1;
char first[100];
do {
int number;
int mark = 0;
if(num > 1) {
strcpy(str[0],first);
number = 1;
}
else
number = 0;
for(;;number++) {//读取字符串
scanf("%s", str[number]);
if(strlen(str[number]) == 1 && strcmp(str[number], "9") == 0) {
break;
}
}
/* for(int i = 0; i < number; i++) {
int len1 = strlen(str[i]);
for(int j = i + 1; j < number; j++) {
int len2 = strlen(str[j]);
if(len1 > len2) {
char temp[100];
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}//按照字母的数量进行排序
}
}
*/
for(int i = 0; i < number; i++) {
for(int j = i + 1; j < number; j++) {
int len1 = strlen(str[i]);
int len2 = strlen(str[j]);
int len = len1 > len2 ? len2:len1;
int k;
for( k = 0; k < len; k++) {
if(str[i][k] != str[j][k])
break;
}//判断是不是其他数列的前缀
if(k == len) {
mark++;
break;
}
}
if(mark == 1)
break;
}
if(mark == 0)
printf("Set %d is immediately decodable\n", num++);
else
printf("Set %d is not immediately decodable\n", num++);
}while(scanf("%s", first) != EOF);
return 0;
}