解题思路:
注意事项:
参考代码:
#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二级辅导-计负均正 (C语言代码)浏览:556 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:717 |
A+B for Input-Output Practice (C++代码)浏览:632 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:603 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:689 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
三角形 (C语言代码)浏览:965 |
a+b浏览:452 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:537 |
分糖果 (C语言代码)浏览:980 |