POJ 1080 基因序列相似度計算 動態規劃

2021-09-01 01:23:01 字數 870 閱讀 4471

本題為典型的動態規劃,關鍵找出序列比對的3個不同情況,即子問題

設d[i][j]為取s1第i個字元,s2第j個字元時的最大分值

則決定p為最優的情況有三種 p陣列為分數矩陣

1、 s1取第i個字母,s2取「 - 」: d[i-1][j]+p[ s1[i-1] ]['-'];

2、 s1取「 - 」,s2取第j個字母:d[i][j-1]+p['-'][ s2[j-1] ];

3、 s1取第i個字母,s2取第j個字母:d[i-1][j-1]+p[ s1[i-1] ][ s2[j-1] ];

即dp[i][j]為上述三種情況的最大值

易犯錯誤

1、p陣列的初始化,不細心的話容易犯錯(因為這個低階錯誤wa兩次- -)

2、d[0][j],d[i][0],d[0][0]邊界值的賦值

source code

problem:1080

user:yangliuacmer

memory:568k

time:0ms

language:c++

result:accepted

#include using namespace std; #define maxlen 200 #define mininf -1; int max3(int x, int y, int z) int main() for(i = 1; i < len2; i++) for(i = 1; i <= len1; i++) } cout<

poj 1080(動態規劃)

問題描述 已知 有兩給定序列str1和str2,序列只由組成。現在序列中插入空格 用 表示 由於 可表示任意字元,故上述插入操作可使str1 str2,例如 str1 agtgatg str2 gttag 插入 後變為 str1 agtgat g str2 gt tag 另外,str1和str2對應...

POJ 1080(最長公共子串行)

一道最長公共子串行變形的題目。關於那個 沒想到很好的處理方式,直接打表了。最長公共子串行的狀態轉移方程 if a i b i dp i j dp i 1 j 1 1 else dp i j max dp i 1 j dp i j 1 這道題需要做一下變形 s1取字母,s2取字母 dp i 1 j 1...

動態規劃 基因序列相似性問題

基因序列相似性問題 time limit 5s memory limit 32m accepted submit 47 total submit 451 genotype 是乙個有限的基因序列集。它的每個成員都是由大寫的英文本母a z組成,不同的字母表示不同種類的基因。乙個基因種類可以分化成為若干新...