藍橋杯 DNA比對

2021-08-18 21:59:54 字數 1082 閱讀 2824

脫氧核糖核酸即常說的dna,是一類帶有遺傳資訊的生物大分子。它由4種主要的脫氧核苷酸(damp、dgmp、dcmt和dtmp)通過磷酸二酯鍵連線而成。這4種核苷酸可以分別記為:a、g、c、t。

dna攜帶的遺傳資訊可以用形如:aggtcgactcca.... 的串來表示。dna在轉錄複製的過程中可能會發生隨機的偏差,這才最終造就了生物的多樣性。

為了簡化問題,我們假設,dna在複製的時候可能出現的偏差是(理論上,對每個鹼基被複製時,都可能出現偏差):

1. 漏掉某個脫氧核苷酸。例如把 aggt 複製成為:agt

2. 錯碼,例如把 aggt 複製成了:agct

3. 重碼,例如把 aggt 複製成了:aaggt

如果某dna串a,最少要經過 n 次出錯,才能變為dna串b,則稱這兩個dna串的距離為 n。

例如:aggtcatattcc 與 cggtcatattc 的距離為 2

你的任務是:編寫程式,找到兩個dna串的距離

【輸入、輸出格式要求】

使用者先輸入整數n(n<100),表示接下來有2n行資料。

接下來輸入的2n行每2行表示一組要比對的dna。(每行資料長度<10000)

程式則輸出n行,表示這n組dna的距離。

例如:使用者輸入:

3agctaaggcctt

agctaaggcct

agctaaggcctt

aggctaaggcctt

agctaaggcctt

agcttaaggctt

則程式應輸出:11

思路:按照四種情況(相等 錯碼 漏碼 重碼)寫出狀態轉移方程

**:#include

using namespace std;

const int maxn = 1e4 + 50;

int n, dp[maxn][maxn];

string s1, s2;

int fun(int len1, int len2)

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

}return dp[len1][len2];

}int main()

}return 0;

}

DNA比對演算法 BWT

bwt演算法,實質上是字首樹的一種實現。那麼什麼是字首樹呢?回到頂部 對於問題p in s?如果s rpq,那麼p為s字首rp的乙個字尾。於是,為了判斷p in s 是否成立,我們找到s的所有字首,然後逐一判斷p是不是它們的字尾。為了加快效率,我們將所有的字首建成一顆樹,這棵樹便是字首樹。下面,我們...

藍橋杯 問題 1115 DNA

小強從小就喜歡生命科學,他總是好奇花草鳥獸從 來的。終於,小強上中學了,接觸到了神聖的名詞 dna.它有乙個雙螺旋的結構。這讓一根筋的小強抓破頭皮,要是能畫出來就好了 小強喊道。現在就請你幫助他吧 輸入包含多組測試資料。第乙個整數n n 15 n表示組數,每組資料報含兩個整數a,b。a表示乙個單位的...

藍橋杯 Python實現問題 1115 DNA

小強從小就喜歡生命科學,他總是好奇花草鳥獸從 來的。終於,小強上中學了,接觸到 了神聖的名詞 dna.它有乙個雙螺旋的結構。這讓一根筋的小強抓破頭皮,要是能畫出來就 好了 小強喊道。現在就請你幫助他吧輸入包含多組測試資料。第乙個整數n n 15 n表示組數,每組資料報含兩 個整數a,b。a表示乙個單...