http://acm.sdibt.edu.cn:8080/judge/contest/view.action?cid=397#problem/H
对这道题,我们可以通过每次用一个与其他各个进行比较,同时,两两比较结束的标志为两者中任意一个先结束来判断是否成立
#include<stdio.h>
#include<string.h>
int main(){
    char s[100][100];
    int i=0,j,k,l=0,n,t,flag;
    while(scanf("%s",s[i])!=EOF){
        flag=0;
        i++;
        while(scanf("%s",s[i])!=EOF&&strcmp(s[i],"9")){
            i++;
        }
        for(j=0;j<i;j++){
            for(k=j+1;k<i;k++){
                t=0;
                for(n=0;n<strlen(s[j])&&n<strlen(s[k]);n++)
                    if(s[j][n]!=s[k][n]){
                        t=1;
                        break;
                    }
                if(t==0){
                    flag=1;
                    break;
                }
            }
            if(flag==1){
                printf("Set %d is not immediately decodable\n",++l);
                break;
            }
        }
        if(flag==0)
            printf("Set %d is immediately decodable\n",++l);
            memset(s,0,sizeof(s));
        flag=i=0;
    }
    return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation