兩個基因的相似度的計算方法如下:
對於兩個已知基因,例如agtgatg和gttag,將它們的鹼基互相對應。當然,中間可以加入一些空鹼基-,例如:
這樣,兩個基因之間的相似度就可以用鹼基之間相似度的總和來描述,鹼基之間的相似度如下表所示:
那麼相似度就是:(−3)+5+5+(−2)+(−3)+5+(−3)+5=9。因為兩個基因的對應方法不唯一,例如又有:
相似度為:(−3)+5+5+(−2)+5+(−1)+5=14。規定兩個基因的相似度為所有對應方法中,相似度最大的那個。
輸入格式:
共兩行。每行首先是乙個整數,表示基因的長度;隔乙個空格後是乙個基因序列,序列中只含a,c,g,t四個字母。1≤1≤序列的長度≤100。
輸出格式:
僅一行,即輸入基因的相似度。
輸入樣例#1:
7 agtgatg
5 gttag
輸出樣例#1:
14
思路:
我們設dp【i】【j】為第乙個基因的1~i位和第二個基因的1~j位的最大相似值,那麼可以得到遞推公式dp【i】【j】=max(dp【i-1】【j】+ maps【i】【-】,dp【i】【j-1】 + maps【-】【j】,dp【i - 1】【j - 1】+ maps【i】【j】)
**:
#include #include #include using namespace std;
int maps[5][5] = ;
char s1[105], s2[105];
int dp[105][105] = ;
mapzcy;
int main ()
for (int i = 1; i <= m; i++)
for (int i = 1; i <= n; i++)
}printf("%d\n", dp[n][m]);
return 0;
}
如果有寫的不對或者不全面的地方 可通過主頁的****進行指正,謝謝 洛谷1140 相似基因
洛谷1140 相似基因 題目背景 大家都知道,基因可以看作乙個鹼基對序列。它包含了4種核苷酸,簡記作a,c,g,t。生物學家正致力於尋找人類基因的功能,以利用於診斷疾病和發明藥物。在乙個人類基因工作組的任務中,生物學家研究的是 兩個基因的相似程度。因為這個研究對疾病的 有著非同尋常的作用。題目描述 ...
洛谷P1140 相似基因
大家都知道,基因可以看作乙個鹼基對序列。它包含了4種核苷酸,簡記作a,c,g,t。生物學家正致力於尋找人類基因的功能,以利用於診斷疾病和發明藥物。在乙個人類基因工作組的任務中,生物學家研究的是 兩個基因的相似程度。因為這個研究對疾病的 有著非同尋常的作用。兩個基因的相似度的計算方法如下 對於兩個已知...
洛谷P1140 相似基因
大家都知道,基因可以看作乙個鹼基對序列。它包含了44種核苷酸,簡記作a,c,g,ta,c,g,t。生物學家正致力於尋找人類基因的功能,以利用於診斷疾病和發明藥物。在乙個人類基因工作組的任務中,生物學家研究的是 兩個基因的相似程度。因為這個研究對疾病的 有著非同尋常的作用。兩個基因的相似度的計算方法如...