考查:LCS 动态规划
提交情况:1次AC
对状态转移方程又有了一个稍微深入的理解,但还差很远。对LCS的三种情况在这里的运用还没太懂。对于LCS,算法导论中的结论是,设两个字符串X={x0,x1...xm},Y={y0,y1...yn}和它们的最长公共子序列Z={z0,z1...zk},则:
(1)xm=yn,那么可得到zk=xm=yn且zk-1是Xm-1和Yn-1的一个最长公共子序列
(2)xm!=yn,那么由zk=xm可得到Z是Xm和Yn-1的一个最长公共子序列
(3)xm!=yn,那么由zk=yn可得到Z是Xm-1和Yn的一个最长公共子序列
因此若设c[i,j]为最长公共子序列的长度,则可得状态转移方程为
c[i,j]=0, i=0 或j=0
c[i,j]=c[i-1,j-1]+1, xi=yj
c[i,j]=max{c[i-1,j],c[i,j-1]}, xi!=yj
AC_CODE