蓝桥杯java第三届决赛第四题--DNA比对
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯java第三届决赛第四题--DNA比对
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【編程題】(滿分27分)脫氧核糖核酸即常說的DNA,是一類帶有遺傳信息的生物大分子。它由4種主要的脫氧核苷酸(dAMP、dGMP、dCMT和dTMP)通過磷酸二酯鍵連接而成。這4種核苷酸可以分別記為:A、G、C、T。DNA攜帶的遺傳信息可以用形如:AGGTCGACTCCA.... 的串來表示。DNA在轉錄復制的過程中可能會發生隨機的偏差,這才最終造就了生物的多樣性。為了簡化問題,我們假設,DNA在復制的時候可能出現的偏差是(理論上,對每個堿基被復制時,都可能出現偏差):1. 漏掉某個脫氧核苷酸。例如把 AGGT 復制成為:AGT2. 錯碼,例如把 AGGT 復制成了:AGCT3. 重碼,例如把 AGGT 復制成了:AAGGT如果某DNA串a,最少要經過 n 次出錯,才能變為DNA串b,則稱這兩個DNA串的距離為 n。例如:AGGTCATATTCC 與 CGGTCATATTC 的距離為 2你的任務是:編寫程序,找到兩個DNA串的距離。【輸入、輸出格式要求】用戶先輸入整數n(n<100),表示接下來有2n行數據。接下來輸入的2n行每2行表示一組要比對的DNA。(每行數據長度<10000)程序則輸出n行,表示這n組DNA的距離。例如:用戶輸入:3AGCTAAGGCCTTAGCTAAGGCCTAGCTAAGGCCTTAGGCTAAGGCCTTAGCTAAGGCCTTAGCTTAAGGCTT則程序應輸出:112【注意】請仔細調試!您的程序只有能運行出正確結果的時候才有機會得分!在評卷時使用的輸入數據與試卷中給出的實例數據可能是不同的。請把所有函數寫在同一個文件中,調試好后,拷貝到【考生文件夾】下對應題號的“解答.txt”中即可。相關的工程文件不要拷入。源代碼中不能使用諸如繪圖、Win32API、中斷調用、硬件操作或與操作系統相關的API。允許使用STL類庫,但不能使用MFC或ATL等非ANSI c++標準的類庫。例如,不能使用CString類型(屬于MFC類庫),不能使用randomize, random函數(不屬于ANSI C++標準)
package com.sihai.sanjie;import java.util.Scanner;public class _4 {static int MAXN = 10005;static char dest[] = new char[MAXN]; static char str[] = new char[MAXN]; static int dp[][] = new int[MAXN][MAXN]; public static void main(String[] args) {int n; Scanner s = new Scanner(System.in); n = s.nextInt();while (n>0) { String dest = s.nextLine();String str = s.nextLine();int dest_len = dest.length(); int str_len = str.length(); System.out.println();System.out.println(DP(str_len,dest_len)); n--;} }public static int DP(int x, int y) { int i, j; for(i = 0; i <= x; i++) dp[i][0] = i; for(j = 0; j <= y; j++) dp[0][j] = j; for(i = 1; i <= x; i++) { for(j = 1; j <= y; j++) { if(dest[i-1] == str[j-1]) { dp[i][j] = dp[i-1][j-1]; } else { dp[i][j] = Math.min(Math.min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]) + 1; } } } return dp[x][y]; }
}
總結
以上是生活随笔為你收集整理的蓝桥杯java第三届决赛第四题--DNA比对的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯java第三届决赛第一题--星期日
- 下一篇: Error:Unable to reso