yfcms企业网站建设,网上商城项目设计方案,产品软文范例,福州app开发2023.8.25 使用dp数组解决。 定义一个二维dp数组#xff0c;dp[i][j]的含义为#xff1a;字符串s#xff08;下标为i-1#xff09;中#xff0c;子序列t#xff08;下标为j-1#xff09;出现的个数。 当字符串s[i-1]和t[j-1]相同时#xff0c;递推公式为#xff1a;d…2023.8.25 使用dp数组解决。 定义一个二维dp数组dp[i][j]的含义为字符串s下标为i-1中子序列t下标为j-1出现的个数。 当字符串s[i-1]和t[j-1]相同时递推公式为dp[i][j] dp[i-1][j-1] dp[i][j-1]; 不相同时dp[i][j] dp[i][j-1]; 初始化需要将第一行全初始化为1。 下面看代码
class Solution {
public:int numDistinct(string s, string t) {vectorvectoruint64_t dp(t.size()1,vectoruint64_t(s.size()1,0));//初始化第一行for(int i0; is.size(); i) dp[0][i] 1;for(int i1; it.size(); i){for(int j1; js.size(); j){if(t[i-1] s[j-1]) dp[i][j] dp[i-1][j-1] dp[i][j-1];else dp[i][j] dp[i][j-1];}}return dp[t.size()][s.size()];}
};