两个字符串A,B找相同的部分,从后往前考虑,比较最后一个字符,只有2种可能,相同/不一样。html
假设 c[i,j]表示Ai 和 Bj 的LCS的长度算法
相同:说明是公共子序列的一部分,那么去掉这个元素以后就是子问题加这个元素segmentfault
即 C[i,j] = C[i-1,j-1] + 1 i,j >0, Ai = Bjspa
不一样:说明公共子序列的子问题须要分两种状况:.net
最长公共子序列:要么与A串和去掉最后一个字符后B串的最长公共子序列同样设计
要么与B串和去掉最后一个字符后A串的最长公共子序列同样code
即 C[i,j] = max{C[i,j-1],C[i-1,j]} i,j > 0, Ai != Bjhtm
初始化:C[i,j] = 0 i=0或j=0blog
http://blog.csdn.net/amazingcode/article/details/51694332递归
公共字符串,必须是连续的
一、把两个字符串分别以行和列组成一个二维矩阵。
二、比较二维矩阵中行和列对应的每一个点的字符是否相同,是设置这个点为1,否设置这个点为0。
三、经过查找值为1的最长对角线来找到最长公共字符串。
或者当两个点的字符相同的时候,设置成此点的左上角的数字+1,最后二维矩阵最长的数字就是最长字串长度,而后回溯出字符串便可
C[i,j] = 0 i=0或j=0
C[i,j] = 0 i,j > 0, Ai != Bj
C[i,j] = C[i-1,j-1] + 1 i,j >0, Ai = Bj
最长递增子序列(从前日后作递推)
长度为N的字符串,找出最长递增子序列,从前日后分别求出以i位置的字符串为结尾的字串的最长递增子序列,而后找出最大值便可。
int[N],来保存前i节字符且以i位置的字符为结尾的时候最长递增子序列的值。
则有F(i)=Max(F(j)) + 1, 其中i>j,且ai>aj. 即:从前面全部知足条件的i>j,且ai>aj里找最大的那个加一。
http://blog.csdn.net/iNiegang/article/details/47379873
https://www.cnblogs.com/lonelycatcher/archive/2011/07/28/2119123.html 更优解
最大连续子序列和 (从前日后作递推)
用sum(j)表示a1到aj的和,很容易求出动态规划的递归式:
sum(j) = max(sum(j-1)+aj , aj)
http://blog.csdn.net/jiaohanhan/article/details/71809357
最大字串和
http://conw.net/archives/9/
http://blog.nlogn.cn/programming-pearls-the-maximum-sum-of-substring/
有几种硬币面额(每种硬币无限量),给一个数字M,找出能够经过最少多少个硬币组成。
将每一种数字须要最少找零数都算出来:F(M)
从1计算到M-1,即F(1)~F(M-1)都已经计算出来了,那么F(M)只有三种状况:
1.无法找 F(M)=0
2.恰好有同面额硬币 F(M)=1
3.Ci为某种面额的硬币 F(M)=Min(F(M-Ci))+1
解释:先每种面额硬币都尝试找一枚后,看Min的数值加一就是当前的Min面额;
也能够解释为,没种硬币分找与不找(0/1)两种状况。
http://blog.csdn.net/you12345678901234567/article/details/8130804
背包问题 (先获得该问题的局部解而后扩展到全局问题解,考虑0/1问题)
构建二维矩阵:
横坐标表示1~M容量,纵坐标标识A~Z都物品是否拿。
该矩阵中的每一个值的求解都表明一个更小的背包问题。
即:V[i][j]表明有i种物品,j容量时的背包问题。
填充二维矩阵:
第一行只有A时,容量为1~M都包分别能拿多少:若是只有一件,当不可拿时填充0,能够拿及更大容量都包包时填充相应都价值。
第二行有AB时,容量为1~M都包分别能拿多少:若是只有一件,当不可拿时(B的大小超过背包容量)按照第一行当前背包容量填充即V[1][j], 能够拿时(B的大小未超过背包容量),计算若是拿B的话最多能拿多少,此时能够看做B的价值+背包去掉B的容量时的小背包的值(这个值是以前计算过的),获得这个值与不拿B的状况比,选择大的值填充。
http://www.importnew.com/13072.html
http://blog.csdn.net/stack_queue/article/details/53544109
https://www.cnblogs.com/liuzhen1995/p/6374541.html
https://wenku.baidu.com/view/4d68b68fbceb19e8b8f6bacd.html
https://www.cnblogs.com/wuyuegb2312/p/3281264.html
https://mp.weixin.qq.com/s?__biz=MzI1MTIzMzI2MA==&mid=2650561168&idx=1&sn=9d1c6f7ba6d651c75399c4aa5254a7d8&chksm=f1feec13c6896505f7886d9455278ad39749d377a63908c59c1fdceb11241e577ff6d66931e4&scene=21#wechat_redirect