解题思路:
注意事项:
参考代码:
#include<iostream> #include<string> #include<set> using namespace std; string s1; int ish(int n) { set<string> s; for(int i=0;i<n;i++) { s.insert(s1.substr(i,1)); } if(n>1) { for(int i=2;i<n;i+=2) { for(int j=0;j+i<n;j++) { int k=i+j; for(int h=j;h<i/2+j;h++) { if(s1[h]==s1[k--]) { if(h+1 == k) { s.insert(s1.substr(j,i+1)); } continue; } else { break; } } } } } // for(set<string>::iterator it=s.begin();it!=s.end();it++) // { // cout<<*it<<endl; // } return s.size(); } int noh(int x) { set<string> s; if(s1.size()-x == 1) { return 0; } for(int i=2;i<=s1.size()-x;i++) { for(int j=x;j<=s1.size()-i;j++) { int k=j+i-1; for(int h=j;h<s1.size();h++) { if(s1[h]==s1[k--]) { if(h+1 == k) { break; } else if(h == k) { s.insert(s1.substr(j,i)); break; } } else { s.insert(s1.substr(j,i)); break; } } } } // for(set<string>::iterator it=s.begin();it!=s.end();it++) // { // cout<<*it<<endl; // } return s.size(); } int main() { int n; int sum=-1; cin>>n>>s1; for(int i=1;i<n;i++) { int s=ish(i)*noh(i); if(s>sum) { sum=s; } } cout<<sum<<endl; return 0; }
0.0分
0 人评分
【回文数(二)】 (C++代码)浏览:874 |
Tom数 (C++代码)浏览:828 |
C二级辅导-统计字符 (C语言代码)浏览:506 |
printf基础练习2 (C语言代码)浏览:567 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:617 |
P1001 (C语言代码)浏览:801 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:575 |
C语言考试练习题_保留字母 (C语言代码)浏览:713 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:561 |
C二级辅导-温度转换 (C语言代码)浏览:732 |