脫氧核糖核酸即常說的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表示乙個單...