题意: 对于输入的一串字符串,判断是否其中的的一个是另一个的前缀码 思路:数据量很小,对串排序后,枚举所有串两两表较就可以了 代码: #include <iostream> #include <cstdio> #include <cstring> using namespace std; char str[15][15]; int cmp(const void *a, const void *b) { return strcmp((char *)a,(char *)b); } int main(void) { int c = 1; while(scanf("%s",str[0])!=EOF) { int t = 1; while(true) { scanf("%s",str[t]); if(str[t][0] == '9') { t++; break; } t++; } qsort(str,t,sizeof(char)*15,cmp); int i,j,k; bool flag = false; for(i=0; i<t-1; ++i) { for(j=i+1; j<t; ++j) { int len = strlen(str[i]); char s[15]; for(k=0; k<len; k++) s[k] = str[j][k]; s[k] = '/0'; if(strcmp(str[i],s)==0) { flag= true; break; } } if(flag) { printf("Set %d is not immediately decodable/n",c++); break; } } if(!flag) printf("Set %d is immediately decodable/n",c++); memset(str,0,sizeof(str)); } return 0; }