最长回文子序列
字符串有关的动态规划,从左向右想不通时,从右向左试一试!

应该是从右向左,依次寻找对应的最长回文子序列,话不多说,直接上公式:

边界条件判断是否需要处理:
1.对于dp[i+1][j]和dp[i][j-1]大可放心,因为对于第一行第一列,和最后一行最后一列,都初始化成了1!退一万步来说,已经初始化成了0,就算会访问的红色的边界,也不会有问题,因为dp的最小值都为1,任何一个字符自己都可以构成一个回文字符串。
2.对于dp[i+1][j-1]这个确实会出现在不合法区域,但是我们将其初始化成了0,这种情况就是只有ij相邻时才会出现,直接变成了0,执行+2操作,不必特殊处理
最后,我想记录一下关于循环方向的问题,这个题一看需要用到dp[i+1][j-1]这种字眼,说明计算dp[i][j]时,i+1行已经有结果,j-1列有结果,所以i从下向上循环,j从左向右循环。


