USACO Section 1.3 Calf Flac
2013-11-26 22:46
417 查看
/* ID: lucien23 PROG: calfflac LANG: C++ */ #include<iostream> #include<fstream> #include<string> #include<cctype> using namespace std; int main() { ifstream infile("calfflac.in"); ofstream outfile("calfflac.out"); if(!infile || !outfile) { cout<<"file operation failure!"<<endl; return -1; } string entireString=""; char strTemp[100]; infile.getline(strTemp,100,'\n'); entireString+=strTemp; while(!infile.eof()) { char strTemp[100]; infile.getline(strTemp,100,'\n'); entireString+="\n"; entireString+=strTemp; } string letterString="";//去除原串中的多余字符后的净字母串 int i=1,j,m=1,n=-1;//i、j分别为原串中的回文两端的比较位置,m、n为字母串中的回文两端的位置 int start,end,maxLen=0;//start、end分别为最大回文的首尾index int len=entireString.length(); for (j=0;j<len;j++) { if(isalpha(entireString[j])) { letterString+=entireString[j]; n++; if(m>0 && tolower(letterString[m-1])==tolower(letterString )) {//处理aba的情况 m--; while(i>0 && !isalpha(entireString[--i])); if(n-m+1>maxLen) { maxLen=n-m+1; start=i; end=j; } }else if(m+1==n && tolower(letterString[m])==tolower(letterString )) {//处理abba的情况 if(n-m+1>maxLen) { maxLen=n-m+1; start=i; end=j; } }else{//如果此次回文读取结束则将光标均移至右边重新开始寻找 m=n; i=j; } } } string strPalin=entireString.substr(start,end-start+1); outfile<<maxLen<<endl<<strPalin<<endl; return 0; }
相关文章推荐
- USACO Section 1.3 Calf Flac
- USACO Section 1.3 PROB Calf Flac(最长回文子串)
- [USACO]Section 1.3 Calf Flac
- USACO Section 1.3 Calf Flac - 简单的字符串处理
- USACO Section 1.3: Prob Calf Flac
- USACO Section 1.3 : Calf Flac (calfflac)
- USACO Section 1.3 Calf Flac
- USACO 1.3 Calf Flac (枚举)
- USACO 1.3 Calf Flac (calfflac)
- USACO 1.3 Calf Flac (最长回文子串 DP动态规划)
- USACO 1.3 Calf Flac
- USACO 1.3 Calf Flac
- 【最长回文字串】Calf Flac 最长的回文 (Usaco_Training 1.3)
- USACO 1.3 Calf flac
- USACO 1.3 Calf Flac(枚举)
- usaco 1.3 calfflac...枚举...
- 【最长回文字串】Calf Flac 最长的回文 (Usaco_Training 1.3)
- usaco 1.3 Calf Flac(暴搜)
- USACO-cha1-sec1.3(AOJ-133) Calf Flac