如果说图论多敲敲代码,还是可以理解的,那么动态规划就是靠智商了= =
目前除了背包问题,其他都似懂非懂。。遇到问题估计只有套模板了……
《算法笔记》P436
代码:
#include <stdio.h>
#include <string.h>
const int maxn = 1010;
char S[maxn];
int dp[maxn][maxn];
int main(){
gets(S);
int len = strlen(S);
int ans = 1;
memset(dp,0,sizeof(dp));
//边界
for(int i = 0;i <len;i++){
dp[i][i] = 1;
if(i <len - 1){
if(S[i] == S[i+1]){
dp[i][i+1] = 1;
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] && dp[i+1][j-1] == 1){
dp[i][j] = 1;
ans = L;
}
}
}
printf("%d\n",ans);
return 0;
}
/*
patzjujztaccbss
*/