题目
-
范围上尝试模型,对[i,j]范围上进行可能性分析,分为四种情况
- 以i开头,不以j结尾,a
- 不以i开头,以j结尾,b
- 不以i开头、不以j结尾,c
- 以i开头、j结尾,d
-
dp[i][j]表示[i,j]范围上的数量,则最终方案数量为 a+b+c+d
- dp[i-1][j]表示[i-1,j]范围上的数量,而[i-1,j]范围内的可能对应上面的情况为b+c
- dp[i][j-1]表示[i,j-1]范围上的数量[i,j-1]范围内的可能对应上面的情况为a+c
- 所以 dp[i][j-1]=dp[i-1][j]+dp[i,j-1]-dp[i-1][j-1]
- 当 str[i]===str[j]时,dp[i][j-1]的可能还需要加上dp[i-1][j-1]+1,1表示[i-1,j-1]范围情况为0时,str[i]str[j]本身就能构成一种结果
-
最终dp表填写完对角线和对角线右边的斜线后,通过dp关系填完整张表