時間限制:1.0s 空間限制:2.5mb;
大家都知道,基因可以看作乙個鹼基對序列。它包含了4種核苷酸,簡記作a,c,g,t。生物學家正致力於尋找人類基因的功能,以利用於診斷疾病和發明藥物。
在乙個人類基因工作組的任務中,生物學家研究的是:兩個基因的相似程度。因為這個研究對疾病的**有著非同尋常的作用。兩個基因的相似度的計算方法如下:
對於兩個已知基因,例如agtgatg和gttag,將它們的鹼基互相對應。當然,中間可以加入一些空鹼基-,例如:
agtgat-g
-gt--tag
這樣,兩個基因之間的相似度就可以用鹼基之間相似度的總和來描述,鹼基之間的相似度如下表所示:
那麼相似度就是:(-3)+5+5+(-2)+(-3)+5+(-3)+5=9。因為兩個基因的對應方法不唯一,例如又有:
agtgatg
-gtta-g
相似度為:(-3)+5+5+(-2)+5+(-1)+5=14。規定兩個基因的相似度為所有對應方法中,相似度最大的那個。
輸入共兩行。每行首先是乙個整數,表示基因的長度;隔乙個空格後是乙個基因序列,序列中只含a,c,g,t四個字母。1<=序列的長度<=100。
輸出僅一行,即輸入基因的相似度。
樣例輸入:
7 agtgatg
5 gttag
輸出:14
通過讀題我們發現,這就是構造出兩個串的最大相似度
這種問題,我們通過dp來構造
設dp(i,j)為第乙個串的前i個,和第j個所所能構造出題目的要求的最大相似度·
所以dp(i,j)=min(dp(i-1.j-1)+c[i][j],dp(i-1,j)+c[i][-],dp(i,j-1)+c[-][j]);
如下是**
#include#includeusing
namespace
std;
int num[85][85],minn[101][101
],n1,n2;
char a1[101],a2[101
];int
main()
平面二維DP
馬攔過河卒 原題傳送門 這一到題目也是比較基礎的動態規劃,也可以理解為是遞推,主要是運用加法原理,思維難度不大。我們要求從 0,0 到 n,n 的方案總數,如果沒有馬的話,我們可以這麼做 設 f i j 為從 0,0 走到 i,j 的方案總數,我們知道一定是有上面和左邊走來,所以只需要累加上面和左邊...
完美序列(二維dp)
題目描述 已知乙個長度為l的序列 b1,b2,b3,bl 1 b1 b2 b3 bl n 若這個序列滿足每個元素是它後續元素的因子,換句話說就是對於任意的i 2 i l 都滿足bi bi 1 0 其中 代表求餘 則稱這個序列是完美的。你的任務是對於給定的n和l,計算出一共有多少序列是完美序列。由於答...
二維取數dp
acwing 1027.方格取數 對於走一次,容易得到狀態轉移方程為 f i j max f i 1 j f i j 1 w i j 而對於走兩次時,設定狀態為 f i 1 j 1 i 2 j 2 表示第一條路徑從 1,1 走到 i 1,j 1 第二條路徑從 1,1 走到 i 2,j 2 取的數的最...