Fork me on GitHub
摘要: 最长公共子序列,经典问题。算是我的DP开场题吧。dp[i][j]表示到s1的i位置,s2的j位置为止,前面最长公共子序列的长度。状态转移:dp[i][j] = 0 (i == 0 || j == 0)dp[i][j] = dp[i-1][j-1] + 1 (s1[i] == s2[j]) (此字符相等,说明此时最长公共子序列的长度等于他们之前的LCS(简称)长度加上这个相等的字符(长度为1))dp[i][j] = max(dp[i-1][j],dp[i][j-1]) (s1[i] != s2[j]) (此字符不相等,说明此时LCS为i... 阅读全文
posted @ 2014-04-07 20:30 whatbeg 阅读(253) 评论(0) 推荐(0) 编辑