蓝桥杯:DNA序列修正

问题描述

在生物学中,DNA 序列的相似性常被用来研究物种间的亲缘关系。现在我们有两条 DNA 序列,每条序列由 A、C、G、T 四种字符组成,长度相同。但是现在我们记录的 DNA 序列存在错误,为了严格满足 DNA 序列的碱基互补配对即 A - T 和 C - G,我们需要依据第一条 DNA 序列对第二条 DNA 序列进行以下操作:

  1. 选择第二条 DNA 序列的任意两个位置,交换他们的字符。

  2. 选择第二条 DNA 序列任意一个位置,将其字符替换为 A、C、G、T 中的任何一个。

需要注意的是:每个位置上的碱基只能被操作一次

你的任务是通过最小的操作次数,使第二条 DNA 序列和第一条 DNA 序列互补。并且已知初始两条 DNA 序列长度均为 N。

输入格式

第一行包含一个整数 N(0<N≤1000)表示 DNA 序列的长度。

接下来的两行,每行包含一个长度为 N 的字符串,表示两条 DNA 序列。

输出格式

输出一个整数,表示让第二条 DNA 序列和第一条 DNA 序列互补所需的最小操作次数。

#include "iostream"
#include "vector"
#include "string"using namespace std;
const int N = 1e3 + 10;
string str1, str2;bool isMatch(char ch1, char ch2) {return (ch1 == 'A' && ch2 == 'T') || (ch1 == 'C' && ch2 == 'G') ||(ch1 == 'T' && ch2 == 'A') || (ch1 == 'G' && ch2 == 'C');
}int findMinSwap() {vector<int> unMatch;int ans = 0;// 记录未匹配的位置for (int i = 0; i < str1.length(); i++) {if (!isMatch(str1[i], str2[i]))unMatch.push_back(i);}/**   字符串1的i位置与字符串2的j位置匹配*   字符串1的j位置与字符串2的j位置匹配*   进行交换* */for (int i = 0; i < unMatch.size(); i++) {for (int j = i + 1; j < unMatch.size(); j++) {if (isMatch(str1[unMatch[i]], str2[unMatch[j]]) &&isMatch(str1[unMatch[j]], str2[unMatch[i]])) {swap(str2[unMatch[i]], str2[unMatch[j]]);ans++;unMatch.erase(unMatch.begin() + j);     // 注意这里一定要先释放j位置  如果先释放i位置 那么j位置会向前移动一个位置 导致错误!!!unMatch.erase(unMatch.begin() + i);if(i)i--;break;}}}// ans 加上没有交换的位置只能改变碱基ans += unMatch.size();return ans;
}int main() {int n;cin >> n;cin >> str1 >> str2;cout << findMinSwap() << endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linuxOPS基础_运维概述,及其泛概念

运维岗位定义 什么是运维&#xff1f; ​ 在技术人员&#xff08;写代码的&#xff09;之间&#xff0c;一致对运维有一个开玩笑的认知&#xff1a;运维就是修电脑的、装网线的、背锅的岗位。 ​ IT运维管理是指为了保障企业IT系统及网络的可用性、安全性、稳定性&#xff0…

MongoDB聚合运算符:$dateSubtract

文章目录 语法使用时间测量时区 举例减去固定的数量根据相对日期筛选调整夏令时 $dateSubtract聚合运算符将Date()对象按指定的时间单位递减。从版本5.0开始支持。 语法 {$dateSubtract: {startDate: <Expression>,unit: <Expression>,amount: <Expression>…

SQL 注入 - 二阶注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、二阶注入介绍 二次注入是一种常见于Web应用程序中的安全漏洞,也被称为SQL二阶注入。相对于一次注入漏洞,二次注入更不易被察觉,但却具有同样危险的攻击潜力。简而言之,二次…

SPI总线知识总结

1 SPI的时钟极性CPOL和时钟相位CPHA的设置 1.1 SPI数据传输位数 SPI传输数据过程中总是先发送或接收高字节数据&#xff0c;每个时钟周期接收器或发送器左移一位数据。对于小于16位的数据&#xff0c;在发送前必须左对齐&#xff0c;如果接收的数据小于16位&#xff0c;则采用软…

汽车碰撞与刮伤的实用维修技术,汽车的车身修复与涂装修补教学

一、教程描述 本套汽车维修技术教程&#xff0c;大小7.44G&#xff0c;共有60个文件。 二、教程目录 01-汽车车身修复教程01-安全规则&#xff08;共3课时&#xff09; 02-汽车车身修复教程02-汽车结构&#xff08;共3课时&#xff09; 03-汽车车身修复教程03-汽车修复所使…

session\cookie

一、session 1、基本使用 会话 在整个会话周期中任何servlet或者jsp页面都可以到会话的数据 设置数据 //将登录用户的信息存入到session中 HttpSession//获得session对象HttpSession session req.getSession();session.setAttribute("loginUser", loginUser); …

为什么Spring Cloud 应用程序中,应用程序的加载配置必须写在bootstrap.yaml这个配置文件中,是在哪里规定的?

在 Spring Cloud 应用程序中&#xff0c;bootstrap.yaml&#xff08;或bootstrap.properties&#xff09;的使用并非强制性的&#xff0c;但它扮演着一个特定的角色&#xff0c;主要是因为 Spring Cloud 的设计和工作流程。 背景和设计 Spring Cloud 构建在 Spring Boot 之上…

鸿蒙 Stage模型-应用组件-配置、UIAbility

前提&#xff1a;基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。&#xff08;或有偏颇&#xff0c;自行斟酌&#xff09; 一、概念 可以看到分为运行期、编译器&#xff0c;主要关注UIAbility&#xff08;类似Activity&#xff0c;UI相关&#xff0…

2024年软考-官方最新考试安排出来了,软考新调整,很重要,但也很惹人气愤

官方最新通知&#xff0c;关于2024年度计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作计划 笔试改机考后&#xff0c;必然会迎来调整&#xff0c;但有点让人费解。 这次调整变动主要是每年考试的次数调整&#xff0c;很多改为了一年一考&#xff0c;具体…

Ansible playbook 简介 使用场景

Ansible playbook 简介 playbook 是 ansible 用于配置&#xff0c;部署&#xff0c;和管理被控节点的剧本。   通过 playbook 的详细描述&#xff0c;执行其中的一系列 tasks &#xff0c;可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的一系…

Claude 3 模型发布,压力来到OpenAI这边了~

Anthropic 发布了 Claude 3 系列&#xff0c;包含了三款模型 各具特色&#xff0c;旨在为用户提供更智能、更快速、更高效的选择&#xff0c;可以说是是迄今为止最快、最强大的人工模型&#xff01; Anthropic 一度是 OpenAI 最强力的竞争对手&#xff01; 随着 Claude3 的发…

云计算 3月5号 (DNS域名解析及部署)

DNS域名解析服务 1.DNS介绍 DNS 是域名系统 (Domain Name System) 的缩写&#xff0c;是因特网的一项核心服务&#xff0c;它作为可以将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网&#xff0c;而不用去记住能够被机器直接读取的IP数串。…

408专业课130+|我的备考经验和复盘

408的四门课任务量多到爆炸&#xff01;但难度不止于此。别忘了大部分选计算机的勇士们&#xff0c;是要考数学的&#xff01;直接起飞。 408数学无疑是王炸王炸&#xff0c;要想上岸就一定要把这两个大头一起拿下&#xff01; 作为一个成功上岸的非计算机专业跨考生&#xf…

linux系统ELK组件介绍

ELK组件介绍 ELK组件介绍Elasticsearch&#xff1a;Logstash:Kibana:Kafka&#xff1a; Filebeat: ELK 官网地址&#xff1a;https://www.elastic.co 官网搭建&#xff1a;https://www.elastic.co/guide/index.html 组件介绍 Elasticsearch&#xff1a; 是一个基于Lucene的搜…

CSS全局样式的设置,web开发交流

面试题 HTML 1&#xff0c;html5有哪些新特性&#xff1f; 2&#xff0c;html5移除了那些元素&#xff1f; 3&#xff0c;如何处理HTML5新标签的浏览器兼容问题 戳这里领取完整开源项目&#xff1a;【一线大厂前端面试题解析核心总结学习笔记Web真实项目实战最新讲解视频】…

【十一】【SQL】外连接(左外连接,右外连接)

数据库中的外连接&#xff08;Outer Join&#xff09;用于连接两个表&#xff0c;并包括两个表中的匹配行以及左表&#xff08;LEFT JOIN&#xff09;或右表&#xff08;RIGHT JOIN&#xff09;中未匹配的行。外连接分为两种主要类型&#xff1a; 左外连接&#xff08;LEFT OU…

如何用python实现Can总线通讯

今天去广交会参展, 里面关于工业, 有很多基于profinet、can等总线通讯协议的硬件网关, 好像总线协议一般都用于硬件嵌入式层面, 纯软方面很少涉及, 那如何使用python进行Can总线通讯呢? CAN(Controller Area Network)总线是一种常用于汽车和工业自动化中的通信协议。在…

day58 异常 IO流

异常 1异常处理机制 编译时错误 运行时错误 代码逻辑错误 2异常类结构图 java.lang.Throwable 所有异常的父类 只有它能剖出异常 java.lang.Error: extends Throwable 程序中的硬件严重问题不需要处理 java.lang.Exception extends Throwable 异常 指出要捕获的处理条件 3异常…

外贸独立站使用简站WordPress模板搭建的优势

在全球化的商业浪潮中&#xff0c;外贸独立站成为了企业走出国门、开拓国际市场的重要桥梁。而简站WordPress模板作为一种高效、便捷的建站工具&#xff0c;正受到越来越多外贸企业的青睐。本文将从多个方面分析使用简站WordPress模板搭建外贸独立站的优势。 一、快速搭建&…

深入理解现代JavaScript:从语言特性到应用实践

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 JavaScript作为一门动态、解释性脚本语言&…