首页 > 学院 > 开发设计 > 正文

PAT甲级1040

2019-11-10 21:40:14
字体:
来源:转载
供稿:网友

1040. Longest Symmetric String (25)

时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, Yue

Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, given "Is PAT&TAP symmetric?", the longest symmetric sub-string is "s PAT&TAP s", hence you must output 11.

Input Specification:

Each input file contains one test case which gives a non-empty string of length no more than 1000.

Output Specification:

For each test case, simply PRint the maximum length in a line.

Sample Input:
Is PAT&TAP symmetric?Sample Output:
11
#include<iostream>#include<string>#include<algorithm>using namespace std;const int maxn = 1010;bool d[maxn][maxn] = { false };int main(){	string s;	getline(cin, s);	int len = s.size();	int ans = 1;	for (int i = 0; i < len; i++)	{		d[i][i] = true;		if (i < len - 1)		{			if (s[i] == s[i + 1])			{				d[i][i + 1] = true;				ans = 2;			}		}	}//边界	 //状态转移方程	for (int L = 3; L <= len; L++)//枚举子串的长度	{		for (int i = 0; i+L-1< len; i++)//枚举子串的起始端点,注意判断右端点的范围		{			int j = i + L - 1;			if (s[i] == s[j] && d[i + 1][j - 1])			{				d[i][j] = true;				ans = L;			}		}	}	cout << ans << endl;	return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表