解题步骤:
参考代码:
class Solution {
public:
int numDistinct(string s, string t) {
int n=s.size();
int m=t.size();
//多开一行,多开一列
vector<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];
}
};
你学会了吗???