Leetcode 115 - Distinct Subsequences(dp)
来源:互联网 发布:jquery rotate.js cdn 编辑:程序博客网 时间:2024/06/05 11:58
题意
给定两个字符串S和T,要求删除S中的某些字母使其成为T,问方案数。
思路
编辑距离的变形问题。
状态表示:
我们记
转移方程:
Si==Tj :即当前位置不用考虑,或者删除Si 再考虑,即:d[i,j]=d[i−1,j−1]+d[i−1,j] Si≠Tj :我们必须删除Si 才可能将S转变成T,即d[i,j]=d[i−1,j]
边界条件:
d[0,0]=(S0==T0?1:0) - 若
i<j ,则d[i,j]=0
细节
注意边界
代码
const int maxn = 100005;int d[2][maxn];class Solution {public: int numDistinct(string s, string t) { int n = s.length(), m = t.length(); if (m == 0) return 1; memset(d, 0, sizeof(d)); d[0][0] = (s[0] == t[0] ? 1 : 0); int tt = 0; for (int i = 1; i < n; i++, tt ^= 1) { for (int j = 0; j < m; j++) { if (i < j) { d[tt ^ 1][j] = 0; } else { if (s[i] == t[j]) d[tt ^ 1][j] = (j > 0 ? d[tt][j - 1] : 1)+ d[tt][j]; else d[tt ^ 1][j] = d[tt][j]; } if (i == n - 1 && j == m - 1) return d[tt ^ 1][j]; } } return d[0][0]; }};
0 0
- Leetcode 115 - Distinct Subsequences(dp)
- leetcode Distinct Subsequences DP
- Leetcode dp Distinct Subsequences
- [leetcode][DP] Distinct Subsequences
- LeetCode Distinct Subsequences DP
- leetcode---distinct subsequences---dp
- LeetCode(115) Distinct Subsequences
- leetcode distinct subsequences dp solution
- leetcode -- Distinct Subsequences -- DP重点
- 【dp】leetcode 115. Distinct Subsequences
- LeetCode: Distinct Subsequences [115]
- LeetCode 115 Distinct Subsequences
- [leetcode 115] Distinct Subsequences
- LeetCode(115) Distinct Subsequences
- leetcode || 115、Distinct Subsequences
- Distinct Subsequences leetcode 115
- leetcode 115: Distinct Subsequences
- LeetCode 115: Distinct Subsequences
- 数据流重导向
- ChucK初步(4)
- 如果你不是每天被人拒绝,那就说明你的人生目标不够远大。(If you aren't getting rejected on a daily basis, your goals aren't ambit
- suse linux 文件目录备份和恢复
- git最常用命令
- Leetcode 115 - Distinct Subsequences(dp)
- android便于维护的下面选项卡状态切换
- Java EE开发技术
- bootstrap-table删除指定行注意事项
- Python与人工神经网络(1)——开一个新坑
- Android 4.4从图库选择图片并裁剪,由于系统版本不同导致Uri的bug的几种解决方案
- 【HTML & CSS & JavaScript】JS与Flash的相互调用
- hdu 2047 阿牛的EOF牛肉串(递推)
- 两个对应不同类的list如果有相同的id,差集去重