Given a string S and a string T, count the number of distinct subsequences of S which equals T.
A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, “ACE” is a subsequence of “ABCDE” while “AEC” is not).
Here is an example:
S = “rabbbit”, T = “rabbit”
Return 3.
解法1:O(NM)
dp[i][j]表示的是s[0,i]和t[0,j]的匹配答案。
递推关系可以分为s[i] == t[j] 和不等的两种情况
如果相等,那么既可以是包括i, 那么就是需要知道(i-1,j-1)的结果;也可以是不包括j, 那么就需要知道(i -1, j)的结果
如果不相等,只要(i - 1, j)就可以了。
C++
Java