csu 1328 近似回文词
2015-04-21 21:57
309 查看
[code]#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> using namespace std; int main() { int i,k,j,st,maxx,cnt,p[1024],tot,cas=0,x,m,y,xx,yy; char s[1024],ss[1024]; while(~scanf("%d",&k)) { getchar(); gets(s); memset(p,0,sizeof(p)); memset(ss,0,sizeof(ss)); int len=strlen(s); m=0,maxx=0; x=y=1; for(i=0;i<len;i++) { if(s[i]>='A'&&s[i]<='Z') { p[m]=i+1; ss[m++]=s[i]-'A'+'a'; } else if(s[i]>='a'&&s[i]<='z') { p[m]=i+1; ss[m++]=s[i]; } } for(i=0;i<len;i++) { for(j=0,tot=0;i-j>=0&&i+j<m;j++) { if(ss[i-j]!=ss[i+j]) tot++; if(tot>k) break; xx=p[i-j]; yy=p[i+j]; if(yy-xx>y-x) { x=p[i-j]; y=p[i+j]; } } for(j=0,tot=0;i-j>=0&&i+j+1<m;j++) { if(ss[i-j]!=ss[i+j+1]) tot++; if(tot>k) break; xx=p[i-j]; yy=p[i+j+1]; if(yy-xx>y-x) { x=p[i-j]; y=p[i+j+1]; } } } //for(i=x;i<=y;i++) printf("%c",s[i]); //printf("\n"); //if(x==0) x=1; printf("Case %d: %d %d\n",++cas,y-x+1,x); } return 0; }
相关文章推荐
- csu 1328 近似回文词
- csu 1328: 近似回文词
- CSU 1328 近似回文词
- 字符串 - 近似回文词 --- csu 1328
- csu-1328 近似回文词 和 最长回文字符串
- CSU 1328: 近似回文词
- 字符串 - 近似回文词 --- csu 1328
- 最长回文子串的变形 && csu1328: 近似回文词
- CSU 1328 近似回文词(最长回文子串变形)
- CSU~1328: 近似回文词(模拟)
- CSU 1328 近似回文词(最长回文子串变形)
- CSU 1328 近似回文词(2013湖南省程序设计竞赛A题)
- CSU 1328 近似回文词(最长回文子串变形)
- CSU1328 近似回文词(字符串处理,最长回文子串)
- CSU 1328 近似回文词(最长回文子串变形)
- CSU 1328 近似回文词(最长回文子串变形)
- csu1328(近似回文串)
- CSU 1328 近似回文词(最长回文子串变形)
- CSU 1328 近似回文词(最长回文子串变形)
- CSU 1328 近似回文词(最长回文子串变形)