DP:
class Solution {
public:
int numDistinct(string S, string T) {
int n=S.size(), m=T.size();
if(m>n) return 0;
vector<vector<int> > res(m+1, vector<int>(n+1,0));
for (int i=0; i<n+1; i++) res[0][i]=1;
for (int i=1; i<=m; i++) {
for (int j=1; j<=n; j++) {
if (T[i-1]!=S[j-1]) res[i][j]=res[i][j-1];
else res[i][j]=res[i][j-1]+res[i-1][j-1];
}
}
return res[m][n];
}
};
354

被折叠的 条评论
为什么被折叠?



