https://leetcode-cn.com/problems/distinct-subsequences/
- 困难
- 中等
- 简单
思路
动态规划
class Solution {
public:
int numDistinct(string s, string t) {
vector<vector<long>> dp(t.length() + 1, vector<long>(s.length() + 1));
for (int i = 0; i < s.length(); i++) {
dp[0][i] = 1;
}
// dp[i][j]表示t前i个字符可以由s的前j个组成的最多个数
for (int i = 1; i <= t.length(); i++) {
for (int j = 1; j <= s.length(); j++) {
if (s[j-1] == t[i-1]) {
dp[i][j] = dp[i][j-1] + dp[i-1][j-1];
} else {
dp[i][j] = dp[i][j-1];
}
}
}
return dp[t.length()][s.length()];
}
};