魔堕凡尘吧 关注:10贴子:82
  • 0回复贴,共1

最长回文串,仅限一行

只看楼主收藏回复

#include<stdio.h>#include<string.h>#include<ctype.h>char s[100],buf[100];int m,loc[100],x,y,l;int main(){ m=0;x=0;y=0;l=0; FILE *fin=fopen("in.txt","rb"),*fout=fopen("out.txt","wb"); memset(s,0,sizeof(s)); memset(loc,0,sizeof(loc)); memset(buf,0,sizeof(buf)); fgets(s,sizeof(s),fin); for (int i=0;i<strlen(s);i++) if (isalpha(s[i])) {buf[m]=toupper(s[i]); loc[m++]=i; } m=strlen(buf); for (int i=1;i<m;i++) { for (int j=0;i-j>=0&&i+j<=m;j++) { if (buf[i+j]!=buf[i-j]) break; if (2*j+1>l) { l=2*j+1; x=loc[i-j];y=loc[i+j]; } } for (int j=0;i-j+1>=0&&i+j<=m;j++) { if (buf[i-j+1]!=buf[i+j]) break; if (2*j+2>l) { l=2*j+2; x=loc[i-j];y=loc[i+j+1]; } } } for (int i=x;i<=y;i++) fprintf(fout,"%c",s[i]); return 0;}



IP属地:北京1楼2012-04-03 19:10回复