蓝桥杯预赛决赛题目.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
蓝桥杯预赛决赛题目

import java.util.Scanner; /*** 它由4种主要的脱氧核苷酸(dAMP、dGMP、dCMT和dTMP)通过磷酸二酯键连接而成。 这4种核苷酸可以分别记为:A、G、C、T。 * 为了简化问题,我们假设,DNA在复制的时候可能出现的偏差是: *   1. 漏掉某个脱氧核苷酸。例如把 AGGT 复制成为:AGT * 2. 错码,例如把 AGGT 复制成了:AGCT * 3. 重码,例如把 AGGT 复制成了:AAGGT * 如果某DNA串a,最少要经过 n 次出错,才能变为DNA串b,则称这两个DNA串的距离为 n。 * 例如:AGGTCATATTCC 与 CGGTCATATTC 的距离为 2 * 你的任务是:编写程序,找到两个DNA串的距离。 * 【输入、输出格式要求】 * 用户先输入整数n(n100),表示接下来有2n行数据。 * 接下来输入的2n行每2行表示一组要比对的DNA。(每行数据长度10000) * 程序则输出n行,表示这n组DNA的距离。 * 例如:用户输入: 3 AGCTAAGGCCTT AGCTAAGGCCT AGCTAAGGCCTT AGGCTAAGGCCTT AGCTAAGGCCTT * AGCTTAAGGCTT * 则程序应输出: 1 1 2*/ public class Application { static int[] result = new int[100]; static String a, b; static int ErrorMax = 100000; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for (int i = 0; i n; i++) { ErrorMax = 100000; // 初始化错误数为一个很大的数。 a = scanner.next(); b = scanner.next(); f(0, 0, 0); // 递归计算 result[i] = ErrorMax; // 保存 } for (int i = 0; i n; i++) {// 输出结果 System.out.println(result[i]); } } static void f(int x, int y, int num) { if (x == a.length() y == b.length()) { // 如果两个字符串都到头了,就结束。 if (num ErrorMax) { ErrorMax = num; // 如果按照本方法到头的错误数比原来的少,就保存现在的这个数。 } } else if (x == a.length() || y == b.length()) {// 如果只有一个串到头了,另一个串继续遍历。 if (x == a.length()) { f(x, y + 1, num + 1); } else { f(x + 1, y, num + 1); } } else { if (a.charAt(x) == b.charAt(y)) { // 如果是相同的,都到下一个。 f(x + 1, y + 1, num); } else { if (x 0 a.charAt(x) == a.charAt(x - 1)) {// 如果出现了错误,按两种错误形式分别递归下去。 f(x + 1, y, num + 1);// 假设为重码 f(x + 1, y + 1, num + 1);// 假设为错码 } if (y 0 b.charAt(y) == b.charAt(y - 1)) { f(x, y + 1, num + 1); f(x + 1, y + 1, num + 1); } if (x == 0 y == 0) {// 如果错误在首位置,则只能发生一种错误 f(x + 1, y + 1, num + 1);// 错码 } } } } } import java.util.Scanner; /*** *Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档