DP(遇到的题目可以dp的)
/*
状态表示
{
1.集合:dp[i]表示前i个字符最多保留多少个
2.属性:max
}
状态计算
{
1.不保留这个字符:那么这个就是与上个状态一样:dp[i]=dp[i-1]
2.保留这个字符:那么就要把中间的都删掉,即是把这个字符与前面出现过这个字符之间的字符全都删掉,再加上这两个字符:
dp[i]=dp[pre[s[i]-'a']-1]+2(前提是要前面出现过)
}
状态转移方程:dp[i]=max(dp[i-1],dp[pre[s[i]-'a'].
原创
2022-04-06 21:31:51 ·
260 阅读 ·
0 评论