win8风格手机网站模板,关于电子商务网站建设的现状,闵行装饰,产品拍摄思路
dp数组定义#xff1a;0_i-1的字符串中有0_j-1的字符串有dp[i][j]个递推公式#xff1a; if(s[i-1] t[j-1]){dp[i][j] dp[i-1][j-1] dp[i-1][j];
}else{dp[i][j] dp[i-1][j];
} 在该元素相同时#xff0c;有两种可能1#xff1a;使用该元素#xff0c;所以0_i-2…思路
dp数组定义0_i-1的字符串中有0_j-1的字符串有dp[i][j]个递推公式 if(s[i-1] t[j-1]){dp[i][j] dp[i-1][j-1] dp[i-1][j];
}else{dp[i][j] dp[i-1][j];
} 在该元素相同时有两种可能1使用该元素所以0_i-2中有多少个0_j-2这样再加上i-1和j-1这满足了0_i-1的字符串中有0_j-1的字符串第二种可能不使用该元素直接看0_i-2的字符串中有0_j-1的字符串 不相同时只能不用i-1要跳过i-1所以沿用前一个结果 dp数组初始化for(int i 0; i s.size(); i) dp[i][0] 1;遍历顺序顺序时间复杂度
代码
class Solution {
public:int numDistinct(string s, string t) {long long mod 10E9 7;vector vectorlong long dp(s.size() 1, vectorlong long(t.size() 1, 0));for(int i 0; i s.size(); i) dp[i][0] 1;for(int i 1; i s.size(); i){for(int j 1; j t.size(); j){if(s[i-1] t[j-1]){dp[i][j] dp[i-1][j-1] dp[i-1][j];}else{dp[i][j] dp[i-1][j];}}}return dp[s.size()][t.size()];}
};