給定乙個相似性矩陣
給定兩個基因序列(由agct組成),填充空格『 』,使得相似性分數最高
狀態轉移,其中dp[i,j]表示s1[i]和s2[j]處能取到的最大分數(i=1,2,3...len1,j=1,2,3,..,len2)
dp[i,j]=max(max(dp[i-1,j-1]+table[i,j],dp[i,j-1]+table[i]['-']),dp[i-1,j]+table['-'][j])
注意初始化
for(int i=1;i<=l1;i++) dp[i][0]=dp[i-1][0]+table[t1[i]][4];
for(int i=1;i<=l2;i++) dp[0][i]=dp[0][i-1]+table[4][t2[i]];
**
#include #include using namespace std;
const int maxn=105;
int table[5][5]=,,,
,};int transfer(char c)
int main()
scanf("%d ",&l2);
for(int i=1;i<=l2;i++)
dp[0][0]=0;
for(int i=1;i<=l1;i++) dp[i][0]=dp[i-1][0]+table[t1[i]][4];//注意開頭是可以填空格的
for(int i=1;i<=l2;i++) dp[0][i]=dp[0][i-1]+table[4][t2[i]];
for(int i=1;i<=l1;i++)
}printf("%d\n",dp[l1][l2]);
}return 0;
}
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...
最長公共子串行 最長公共子串
1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...
最長公共子串行 最長公共子串
1.區別 找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。2 最長公共子串 其實這是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公...