给你一个字符串,把它变成回文串,可以添加字母也可以删除其中的字母,对于每一个字母添加和删除需要不同的花费,问使得这个字符串变成回文串最少需要花多少
区间DP,从后向前推,如果区间[i,j] s[i] == s[j],那么dp[i][j] = dp[i+1][j-1], 如果不想等 那么要么是加上一个 或者删除一个,在这里举个例子把,当推到abcb的时候,操作无非两种 删除a或者加上一个a,这两个操作其实是一样的只不过花费不一样,所以可以直接取添加删除中花费较小的那个即可,这样就不用太多的状态转移方程了,一开始添加删除分开写的 有点繁琐,写到一半觉得是一样的
#include
#include
#include
#include
#include
#include
#include
#include
#include