P1140 相似基因

2022-06-02 04:48:10 字數 923 閱讀 4413

題意:給出兩個序列,讓我們進行配對,配對的時候,我們可以在其中加空數;兩個序列都可以

題意給出每種配對的權值,讓我們求如何配對權值最大

思路:我們先預處理出配對的權值情況,再預處理出當兩個序列各自沒開始匹配,而另外乙個序列匹配的多少個空數的情況

為何?因為我們從1開始,需要以0這個情況為基準

然後,我們就開始跑dp,有3種情況,詳情寫在**中

1 #include2

using

namespace

std;

3const

int n=1e3+10;4

const

int tab[5][5]=5,

7 ,

8 ,

9 ,

10

11};

12int

la,lb;

13 std::string

sa,sb;

14int

a[n],b[n];

15int

dp[n][n];

16int

main()

1726

for(int i=1;i<=lb;i++)

32for(int i=1;i<=la;i++) dp[i][0]=dp[i-1][0]+tab[a[i]][4

];33

for(int i=1;i<=lb;i++) dp[0][i]=dp[0][i-1]+tab[b[i]][4

];34

for(int i=1;i<=la;i++)

35for(int j=1;j<=lb;j++)

40 printf("%d"

,dp[la][lb]);

41return0;

42 }

view code

P1140 相似基因

大家都知道,基因可以看作乙個鹼基對序列。它包含了4種核苷酸,簡記作a,c,g,t。生物學家正致力於尋找人類基因的功能,以利用於診斷疾病和發明藥物。在乙個人類基因工作組的任務中,生物學家研究的是 兩個基因的相似程度。因為這個研究對疾病的 有著非同尋常的作用。兩個基因的相似度的計算方法如下 對於兩個已知...

P1140 相似基因 詳解

此題與lcs非常相似。因為是兩個串的比對,所以我們很容易想到用f i j 來表示a串的前i個鹼基和b串的前j個鹼基配出的最大相似度 每乙個鹼基都配對乙個鹼基,或者配空鹼基 那麼這個狀態的前驅就有三種 f i j 1 b j 與空鹼基的相似度 f i 1 j a i 與空鹼基的相似度 f i 1 j ...

洛谷P1140 相似基因

大家都知道,基因可以看作乙個鹼基對序列。它包含了4種核苷酸,簡記作a,c,g,t。生物學家正致力於尋找人類基因的功能,以利用於診斷疾病和發明藥物。在乙個人類基因工作組的任務中,生物學家研究的是 兩個基因的相似程度。因為這個研究對疾病的 有著非同尋常的作用。兩個基因的相似度的計算方法如下 對於兩個已知...