解题步骤:
参考代码:
- class Solution {
- public:
- int numDistinct(string s, string t) {
- int n=s.size();
- int m=t.size();
- //多开一行,多开一列
- vector
double>> dp(m+1,vector<double>(n+1)); - for(size_t j=0;j<=n;j++)
- {
- dp[0][j]=1;//初始化
- }
- //字符串引入空格调整下标对应关系
- s=' '+s;
- t=' '+t;
- //填表
- for(size_t i=1;i<=m;i++)
- {
- for(size_t j=1;j<=n;j++)
- {
- dp[i][j]+=dp[i][j-1];
- if(t[i]==s[j])
- {
- dp[i][j]+=+dp[i-1][j-1];
- }
- }
- }
- //返回值
- return dp[m][n];
- }
- };
你学会了吗???