HDU 2476

卡了我三天的DP

看了这篇博客才略微懂点http://blog.csdn.net/hyogahyoga/article/details/7886416

#include
#include
#include
using namespace std;
string a,b;
int dp[200][200];
int f[200];
void solve(int i,int j)
{
    if(dp[i][j]>=0)return;
    solve(i+1,j);
    if(b[i]==b[j]){
        dp[i][j]=dp[i+1][j];
        return;
    }
    dp[i][j]=dp[i+1][j]+1;
    for(int k=i+1;k<=j-1;k++)
    if(b[i]==b[k])
    {
        solve(i+1,k);
        solve(k+1,j);
        if(dp[i+1][k]+dp[k+1][j]>a>>b)
    {
        int l=a.length();
        memset(dp,-1,sizeof(dp));
        memset(f,-1,sizeof(f));
        for(int i=0;i



你可能感兴趣的:(dp)