1、题目描述
输入字符串s和t,有多少种方式让s删删减减形成t。
2、思路
动态规划。具体看代码吧。
3、代码
int numDistinct(string s, string t) {
int l1=s.size(),l2=t.size();
if(l1<l2) return 0;
int dp[l1+1][l2+1];
for(int i=0;i<=l2;i++)
dp[0][i]=0;
for(int i=0;i<=l1;i++)
dp[i][0]=1;
for(int i=0;i<l1;i++)
for(int j=0;j<l2;j++){
if(s[i]==t[j])
dp[i+1][j+1]=dp[i][j]+dp[i][j+1];
else
dp[i+1][j+1]=dp[i][j+1];
}
return dp[l1][l2];
}