pat 团体赛练习题集 L2-008. 最长对称子串
生活随笔
收集整理的這篇文章主要介紹了
pat 团体赛练习题集 L2-008. 最长对称子串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對給定的字符串,本題要求你輸出最長對稱子串的長度。例如,給定"Is PAT&TAP symmetric?",最長對稱子串為"s PAT&TAP s",于是你應該輸出11。
輸入格式:
輸入在一行中給出長度不超過1000的非空字符串。
輸出格式:
在一行中輸出最長對稱子串的長度。
輸入樣例: Is PAT&TAP symmetric? 輸出樣例: 11雖然是水題,但還是錯了幾遍。貼上來警示下自己。
錯誤原因:沒考慮到對稱串是偶數的情況。
//Asimple #include <bits/stdc++.h> #define INF 0xfffffff #define mod 10007 #define swap(a,b,t) t = a, a = b, b = t #define CLS(a, v) memset(a, v, sizeof(a)) #define debug(a) cout << #a << " = " << a <<endl using namespace std; inline int abs(int x) { return x<0?-x:x; } typedef long long ll; const int maxn = 1005; char str[maxn];void solve() {int len = strlen(str);int ans = 1, cnt;for(int i=0; i<len; i++) {int in = 1, cnt = 1;while( i-in>=0 && i+in<len && str[i-in]==str[i+in] ) {in ++;cnt += 2;}ans = max(ans, cnt);in = 1, cnt = 0;while( i-in>=0 && i+in-1<len && str[i-in]==str[i+in-1] ) {in ++;cnt += 2;}ans = max(ans, cnt);}cout << ans << endl; }void input() {gets(str);solve(); }int main() {input();return 0; }?
轉載于:https://www.cnblogs.com/Asimple/p/6476501.html
總結
以上是生活随笔為你收集整理的pat 团体赛练习题集 L2-008. 最长对称子串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 1444: [Jsoi2009
- 下一篇: 针对于多线程概念的理解