115. Distinct Subsequences

来源:互联网 发布:深入浅出node.js 完整 编辑:程序博客网 时间:2024/05/24 22:45
/*使用动态规划来解决dp[i][j] 代表 s[0~j-1]中包含的t[0~i-1]的不同子字符串的个数dp[0][j]=1 代表空字符串是任意一个字符串的子串dp[i][0]=0 (i!=0) 任意一个非空字符串都不可能是空字符串的子集dp[i][j] if(s[j-1]!=t[i-1])        dp[i][j]=dp[i][j-1]        if(s[j-1]==t[i-1])        dp[i][j]=dp[i][j-1]+dp[i-1][j-1]*/class Solution {public:    int numDistinct(string s, string t) {        vector<vector<int>> dp(t.length()+1,vector<int>(s.length()+1,0));        for(int i=0;i<=s.length();i++)            dp[0][i]=1;        for(int i=1;i<=t.length();i++)            for(int j=1;j<=s.length();j++)            {                if(t[i-1]==s[j-1])                    dp[i][j]=dp[i][j-1]+dp[i-1][j-1];                else                     dp[i][j]=dp[i][j-1];            }        return dp[t.length()][s.length()];    }};
1 0
原创粉丝点击