題意:給出兩個序列,讓我們進行配對,配對的時候,我們可以在其中加空數;兩個序列都可以
題意給出每種配對的權值,讓我們求如何配對權值最大
思路:我們先預處理出配對的權值情況,再預處理出當兩個序列各自沒開始匹配,而另外乙個序列匹配的多少個空數的情況
為何?因為我們從1開始,需要以0這個情況為基準
然後,我們就開始跑dp,有3種情況,詳情寫在**中
1 #include2view codeusing
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 }
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。生物學家正致力於尋找人類基因的功能,以利用於診斷疾病和發明藥物。在乙個人類基因工作組的任務中,生物學家研究的是 兩個基因的相似程度。因為這個研究對疾病的 有著非同尋常的作用。兩個基因的相似度的計算方法如下 對於兩個已知...