Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int numDistinct(string s, string t) {
- n = s.length();
- m = t.length();
- dp = vector<vector<int>>(n+1,vector<int>(m+1,-1));
- if(n<m) return 0;
- return solve(0,0,s,t);;
- }
- private:
- int n,m;
- vector<vector<int>> dp;
- int solve(int i,int j,string& s,string& t){
- if(i==n){
- return j==m;
- }
- if(dp[i][j] != -1) {
- return dp[i][j];
- }
- int take = 0;
- int leave = 0;
- if(j<m && s[i]==t[j]){
- take = solve(i+1,j+1,s,t);
- leave = solve(i+1,j,s,t);
- }
- else{
- leave = solve(i+1,j,s,t);
- }
- return dp[i][j] = take + leave;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement