1、题目是简单,但是想当然,活该WA那么多次。
2、j从0到i-2,k从j+1到i-1,这列举的仅是组合数,而倒过来还要判断,于是应该列举i的平方次,而不是它的一半。
3、注意fgets是以\0结尾,但是\n也会读进,所以判断比较是否结束的依据不是\0而是\n。
#include <stdio.h>
#include <string.h>
int main()
{
char s[10][20]={""};
int count=1,i=0,j,k,a[10]={0};
while(fgets(s[i],100,stdin)!=NULL)
{
if(s[i][0]=='9')
{
int flag=1;
for(j=0;j<i;j++)
{
for(k=0;k<i;k++)
{
if(a[j]<a[k])
{
int p=0;
while(s[j][p]!='\n'&&s[j][p]==s[k][p])
p++;
if(s[j][p]=='\n'){flag=0;break;}
else continue;
}
}
if(flag==0) break;
}
if(!flag)
printf("Set %d is not immediately decodable\n",count);
else
printf("Set %d is immediately decodable\n",count);
count++;i=0;
memset(s,'\0',sizeof(s));memset(a,0,sizeof(a));
}
else
{
a[i]=strlen(s[i]);
i++;
}
}
return 0;
}