51 nod 1088 最長迴文子串
阿新 • • 發佈:2018-12-12
基準時間限制:1 秒 空間限制:131072 KB 分值: 0 難度:基礎題
迴文串是指aba、abba、cccbccc、aaaa這種左右對稱的字串。
輸入一個字串Str,輸出Str裡最長迴文子串的長度。
Input
輸入Str(Str的長度 <= 1000)
Output
輸出最長迴文子串的長度L。
Input示例
daabaac
Output示例
5
暴力求解:
#include <iostream> #include <cstring> using namespace std; int ISPalindrome(char b[],int n) //判斷一個字串是否為迴文串的函式 { int i,j; for(i=0; i<n/2; ++i) { for(j=n-i-1; j>=i; --j) { if(b[i]==b[j]) break; else return 0; } } return 1; } int main() { char a[1002],b[1002]; int i,j,n,ans=0; cin>>a; n=strlen(a); for(i=0; i<n; ++i) { for(j=n-1; j>=i; --j) { int k=i; for( ;k<=j; ++k) { b[k-i]=a[k]; } if(ISPalindrome(b,k-i)) //將所有可能的迴文字串全部試一遍 { int sum=k-i; if(sum>ans) ans=sum; } } } cout<<ans<<endl; return 0; }