PTA1040动态规划题解
Posted 何时能够变强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA1040动态规划题解相关的知识,希望对你有一定的参考价值。
分析:
看到好多题解都是利用dp去记录是否是回文串,其实dp可以直接记录回文串的长度,这里定义dp[i][j]是以i开头j结尾的字符串是否是回文串,不是为0,是的话记录它的长度。
#include<iostream>
using namespace std;
int dp[1001][1001]={0};
int main()
{
string str;
getline(cin,str);
int maxans=-1;
for(int i=str.size()-1;i>=0;i--)
for(int j=i;j<str.size();j++)
{
if(i==j)
dp[i][j]=1;
else if(str[i]==str[j])
{
if(i==j-1)
dp[i][j]=2;
else if(dp[i+1][j-1]!=0)
dp[i][j]=dp[i+1][j-1]+2;
else
dp[i][j]=0;
}
maxans=maxans>dp[i][j]?maxans:dp[i][j];
}
cout<<maxans;
return 0;
}
以上是关于PTA1040动态规划题解的主要内容,如果未能解决你的问题,请参考以下文章
Codevs_1040_[NOIP2001]_统计单词个数_(划分型动态规划)