115:Distinct Subsequences【DP】【字符串】
来源:互联网 发布:苏州网站网络推广公司 编辑:程序博客网 时间:2024/05/16 16:11
题目链接:click~
/*题意:给出两个字符串S和T,求T在S中的子串数。(可以删除S中的字符, 但不能改变原来的相对顺序,共有多少删除方法变成T) *//** *思路:DP,d[i][j]表示S[0,...,i]到T[0,...,j]有多少种转换方式 * 可以想象成二维地图的走法问题,那么问题转为从左上角只能走对角(匹配) 或者往下(删除字符),到右下角一共有多少种走法。 * d[i][0]初始化为1的含义是:任何长度的S,如果转换为空串,那就只有删除全部字符这1种方式。 * 当S[i-1]==T[j-1],可以从d[i-1][j-1]走对角到达d[i][j](S[i-1]匹配T[j-1]) 此外还可以从d[i-1][j]往下到达d[i][j](删除S[i-1]) * 当S[i-1]!=T[j-1],只能从d[i-1][j]往下到达d[i][j](删除S[i-1]) *//*样例 r a b b i t 1 0 0 0 0 0 0r 1 1 0 0 0 0 0a 1 1 1 0 0 0 0b 1 1 1 1 0 0 0b 1 1 1 2 1 0 0b 1 1 1 3 3 0 0i 1 1 1 3 3 3 0t 1 1 1 3 3 3 3*/class Solution {public: int numDistinct(string S, string T) { int n = S.size(); int m = T.size(); vector<vector<int> > d(n+1,vector<int>(m+1,0)); for(int i = 0; i <= n; i ++) d[i][0] = 1; for(int j = 1; j <= m; j ++) d[0][j] = 0; for(int i = 1; i <= n; i ++) { for(int j = 1; j <= m; j++) { if(S[i-1] == T[j-1]) d[i][j] = d[i-1][j] + d[i-1][j-1]; else d[i][j] = d[i-1][j]; } } return d[n][m]; }};
0 0
- 115:Distinct Subsequences【DP】【字符串】
- Leetcode 115 - Distinct Subsequences(dp)
- leetcode Distinct Subsequences DP
- 【DP】Distinct Subsequences
- Leetcode dp Distinct Subsequences
- [leetcode][DP] Distinct Subsequences
- LeetCode Distinct Subsequences DP
- leetcode---distinct subsequences---dp
- leetcode distinct subsequences dp solution
- Uva-10069 Distinct Subsequences DP
- Distinct Subsequences+uva+经典dp
- UVA 10069 Distinct Subsequences(DP)
- leetcode -- Distinct Subsequences -- DP重点
- 115. Distinct Subsequences dp算法
- 【dp】leetcode 115. Distinct Subsequences
- LeetCode 115 Distinct Subsequences (子序列计数 dp)
- FTPrep, 115 Distinct Subsequences, 2D DP 大总结,值得一看
- LeetCode: Distinct Subsequences [115]
- 事件冒泡。阻止事件冒泡 |阻止元素的默认行为
- 【彩票】彩票预测算法(一):离散型马尔可夫链模型C#实现
- 注册页面实现
- Huffman霍夫曼压缩编码算法实现分析
- Dreamweaver CS6破解教程[序列号+破解补丁]
- 115:Distinct Subsequences【DP】【字符串】
- iOS--算法--DES篇
- 创造属于你的价值
- 相关技能 FOR RD
- Problem B: 星系炸弹
- 【彩票】C#玩高频数字彩快3的一点体会
- 拓扑排序--关键路径
- 编程之美-格格取数
- Dell Inspiron 14R-N4041笔记本硬盘损坏更换手记