1. 程式人生 > >51 nod 1088 最長迴文子串

51 nod 1088 最長迴文子串

基準時間限制: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;
}