欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯java第三届决赛第四题--DNA比对

发布时间:2025/3/20 编程问答 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 蓝桥杯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比对的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。