distinct subsequences
1 class Solution { 2 public: 3 int helper(vector<vector<int>> &v, string S,int i, string T, int j) 4 { 5 if( T.length() == j ) return 1; 6 if( T.length() - j > S.length() - i ) return 0; 7 int sum = 0; 8 if( v[i][j] != -1 ) return v[i][j]; 9 for(int k = i;k<S.length();k++) 10 { 11 if( v[k][j] != -1 ) 12 sum += v[k][j]; 13 else 14 { 15 if( S[k] == T[j] ) 16 sum += helper(v,S,k+1,T,j+1); 17 } 18 } 19 v[i][j] = sum; 20 return sum; 21 } 22 int numDistinct(string S, string T) { 23 // Start typing your C/C++ solution below 24 // DO NOT write int main() function 25 vector<vector<int>> v(S.length(),vector<int>(T.length(),-1)); 26 return helper( v,S,0,T,0); 27 } 28 };
posted on 2013-09-06 11:09 jumping_grass 阅读(151) 评论(0) 收藏 举报
浙公网安备 33010602011771号