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

被折叠的 条评论
为什么被折叠?



