兩個字符串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