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 |
尼玛···为何不让用strrev啊~还好改改也过了~#include<stdio.h> #include<string.h> #include<algorithm> #include<stdlib.h> #include<math.h> using namespace std; int main() { int n; scanf("%d",&n); while(n--) { int nn; scanf("%d",&nn); int i,j,temp,minlen,k,ii,jj; char str[nn][102]; scanf("%s",str[0]); minlen=strlen(str[0]);//假设最小长度为第一个输入的字符串 for(i=1;i<nn;i++) //找出最小长度字符串的长度 { scanf("%s",str[i]); minlen=minlen<strlen(str[i])? minlen:strlen(str[i]); } char t[102];int Min=minlen; for(i=0;i<Min;i++) //将长途为minlen的子串取出 { int sum; for(j=0;j<=strlen(str[0])-minlen;j++)//j为子串起点 { sum=0; temp=0; strncpy(t,&str[0][j],minlen); t[minlen]='\0'; char tt[102];strcpy(tt,t); tt[minlen]='\0';char flag; for(ii=0;ii<strlen(t)/2;ii++) //字符串翻转 要注意是一半! { flag=t[ii]; t[ii]=tt[strlen(t)-1-ii]; t[strlen(t)-1-ii]=flag; } //printf("%s %s\n",t,tt); for(k=1;k<nn;k++) { if(strstr(str[k],t)||strstr(str[k],tt)) sum++; if(sum==nn-1)temp=1; if(temp) goto z; } } minlen-=1; if(minlen==0)goto z; } z:if(nn==1) { printf("%d\n",strlen(str[0])); } else printf("%d\n",minlen); } getchar(); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator