1222. 密码脱落(dp划分)

题目:

1222. 密码脱落 - AcWing题库

1222. 密码脱落(dp划分)_第1张图片 

思路:

1222. 密码脱落(dp划分)_第2张图片 

代码:

#include
#include
using namespace std;
const int N=1010;
int f[N][N];//表示以L和R为两端点的字符串的“最长”回文序列长度
char s[N];//存储输入的字符串
int main()
{

    scanf("%s",&s);
    int n=strlen(s);
    //递归枚举字符串的长度
    for(int len=1;len<=n;len++)
    {
        //枚举字符串左端点
        for(int L=0;L+len-1f[L][R])f[L][R]=f[L+1][R];//回文串含右不含左
                if(f[L][R-1]>f[L][R])f[L][R]=f[L][R-1];//回文串含左不含右
                if(f[L+1][R-1]>f[L][R])f[L][R]=f[L+1][R-1];//回文串左右均不含
            }
        }
    }
    printf("%d",n-f[0][n-1]);
    return 0;
}

 

你可能感兴趣的:(dp,算法,c++,数据结构)