115. 不同的子序列
动态规划
设f(i, j)是s[0...i)中t[0...j]匹配到的个数
Base:
当t为空时,s总能成功匹配t
转移方程:
当
s[i] == t[j]时s[i]让自己和t[j]匹配:那么f(i + 1, j + 1)的值就包括了f(i, j)s[i]不让自己和t[j]匹配:那么对于s[0...i+1)来说,因为没有匹配,所以f(i + 1, j + 1)的值就包括f(i, j + 1),就是让前面s[0...i)去和t[0...j + 1)匹配
当
s[i] != t[j]时只能由前面的字符串去和
t[0...i + 1)尝试匹配了。
所以最终的递推方程也由此得到。
1 | class Solution { |