PAT甲级1040

来源:互联网 发布:淘宝怎么刷买家信誉 编辑:程序博客网 时间:2024/06/06 11:37

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;}

0 0
原创粉丝点击