Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
错了很久很久 那位好心人 帮我看看代码 或者 提醒一下那里应该注意的 在下不胜感激#include<stdio.h> #include<string.h> struct { char a[305]; int len; }ans; char tmp[305]; char tot[4001][205]; int next[401]; void getnext() { int k=-1,i=1; int len=strlen(tmp); next[0]=-1; while(i<=len) { if(k==-1||tmp[i]==tmp[k]) { i++; k++; next[i]=k; } else k=next[k]; } } int kmp(char tmp_1[]) { int i=0,k=0,len,lenp,flag=0; len=strlen(tmp_1); lenp=strlen(tmp); while(i<len) { if(k==-1||tmp_1[i]==tmp[k]) { i++; k++; } else k=next[k]; if(k>=lenp){flag=1;break;} } return flag; } int main() { int n,i,len,j,f,pan,k,tt; while(scanf("%d",&n)!=EOF&&n!=0) { ans.len=0; for(i=1;i<=n;i++) { scanf("%s",tot[i]); } len=strlen(tot[1]); for(i=0;i<len;i++) { f=0; for(j=i;j<len;j++) { tmp[f]=tot[1][j]; f++; tmp[f]='\0'; memset(next,0,sizeof(next)); getnext(); pan=1; for(k=2;k<=n;k++) { tt=kmp(tot[k]); if(tt==0){pan=0;break;} } if(pan==0)break; else { if(ans.len<f) { ans.len=f; strcpy(ans.a,tmp); } else if(ans.len==f) { if(strcmp(ans.a,tmp)>0) strcpy(ans.a,tmp); } } } } if(ans.len==0)printf("IDENTITY LOST\n"); else printf("%s\n",ans.a); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator