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

來源:互聯網
上載者:User

 本題為典型的動態規劃,關鍵找出序列比對的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 <iostream>using namespace std;#define maxlen 200#define MININF -1;int max3(int x, int y, int z){int a = x>y?x:y;return a>z?a:z;}int main(){int p[maxlen][maxlen], d[maxlen][maxlen];char s1[maxlen], s2[maxlen];int len1,len2,T,i,j;p['A']['A']=5;//表格的初始化一定要細心,不要因為表格輸入錯誤而WA      p['C']['C']=5;      p['G']['G']=5;      p['T']['T']=5;      p['-']['-']=MININF;      p['A']['C']=p['C']['A']=-1;      p['A']['G']=p['G']['A']=-2;      p['A']['T']=p['T']['A']=-1;      p['A']['-']=p['-']['A']=-3;      p['C']['G']=p['G']['C']=-3;      p['C']['T']=p['T']['C']=-2;      p['C']['-']=p['-']['C']=-4;      p['G']['T']=p['T']['G']=-2;      p['G']['-']=p['-']['G']=-2;      p['T']['-']=p['-']['T']=-1;cin>>T;while(T--){cin>>len1>>s1>>len2>>s2;memset(d, 0, sizeof(d));for(i = 1; i <= len1; i++){d[i][0] = d[i-1][0] + p[s1[i-1]]['-'];}for(i = 1; i < len2; i++){d[0][i] = d[0][i-1] + p['-'][s2[i-1]];}for(i = 1; i <= len1; i++){for(j = 1;j <= len2; j++){d[i][j] = max3(d[i-1][j-1] + p[s1[i-1]][s2[j-1]],            d[i][j-1] + p['-'][s2[j-1]],    d[i-1][j] + p[s1[i-1]]['-']);}}cout<<d[len1][len2]<<endl;}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.