动态规划-计数dp-Distinct Subsequences II
2024-09-06 09:37:16
2020-02-06 17:01:36
问题描述:
问题求解:
非常经典的计数dp问题,思路就是统计以每个字符为结尾的个数,最后求和即可。
dp[i] = sum of (dp[j]) 0 <= j <= i;可以理解为将最后的一个字符追加到前面的字符串后面。
问题是如何去重。
当我们遇到相同的字符的时候,首先最后一个字符单独最为subseq要删除,因为前面计算过了,其次,只能加到第一次碰到形同字符的位置,因为再前面的在这个重复字符的位置已经计算过了。
int mod = (int)1e9 + 7;
public int distinctSubseqII(String S) {
int n = S.length();
int[] dp = new int[n];
Arrays.fill(dp, 1);
for (int i = 0; i < n; i++) {
for (int j = i - 1; j >= 0; j--) {
if (S.charAt(i) != S.charAt(j)) dp[i] = (dp[i] % mod + dp[j] % mod) % mod;
else {
dp[i] -= 1;
dp[i] = (dp[i] % mod + dp[j] % mod) % mod;
break;
}
}
}
int res = 0;
for (int i = 0; i < n; i++) res = (res % mod + dp[i] % mod) % mod;
return res;
}
最新文章
- 用html5的canvas画布绘制贝塞尔曲线
- 转载jQuery图片放大插件[twiPicZoom]
- Linux进程状态 ( Linux Process State Codes)
- 一定要学会paxos算法!
- 高通Android平台硬件调试之Camera篇
- [Hibernate] - Annotations
- request 获取请求参数
- c++继承中的内存布局
- unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇
- Ubuntu16.04+cuda9.0+matlab+opencv3.3+caffe服务器配置(问题汇总)
- day07_Tomcat服务器与http学习笔记
- iterm2 快捷键(转载)
- JavaFTP文件传输上传和下载文件
- 神州数码HSRP(热备份路由协议)配置
- 编写shell脚本kill掉占用cpu超过90%以上的程序
- Day18--Python--面向对象--类与类之间的关系
- c# JSON格式转对象
- C++ 提取网页内容系列之四正则
- unity3d-游戏实战突出重围,第四天 添加角色
- 怎样在winform中上传图片
热门文章
- [css-animation-101] 8 multiple transitions
- 【底层原理:深入理解计算机系统】#1 一切从";hello world";说起 (一)
- C++走向远洋——60(项目四、立体类族共有的抽象类)
- 创建SpringMVC项目过程
- shell 之 case。。。esac多分支选择
- 小白学 Python 数据分析(10):Pandas (九)数据运算
- 移动端overflow失效问题
- JDBC概述及编程步骤详解
- 关于在layui中的table checkbox 默认选中设置
- A. New Building for SIS Codeforce