保亭黎族苗族自治县网站建设_网站建设公司_加载速度优化_seo优化
2026/1/21 18:38:58 网站建设 项目流程

1.练习项目:

问题描述

在生物学中,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 序列长度均为 NN。

输入格式

第一行包含一个整数 N,(1≤N≤103),表示 DNA 序列的长度。

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

输出格式

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

2.选择课程

在蓝桥云课中选择课程《16届蓝桥杯省赛无忧班(C&C++ 组)4期》,选择第二章“基础算法”编程16并开始练习。

3.开始练习

(1)源码:
#include<bits/stdc++.h>
using namespace std;
map<char,int>mp={
{'A',0},
{'C',1},
{'G',2},
{'T',3}
};
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n,ans=0;
cin>>n;
string s1,s2;
cin>>s1>>s2;
for(int i=0;i<n;i++){
if(mp[s1[i]]+mp[s2[i]]!=3){
for(int j=i+1;j<n;j++){
if(mp[s1[i]]+mp[s2[j]]==3&&mp[s1[j]]+mp[s2[i]]==3){
swap(s2[i],s2[j]);
}
}
ans++;
}
}
cout<<ans<<'\n';
return 0;
}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询