湖北省建设厅网站,甘肃做网站的公司有哪些,网络电话免费30分钟,我要下载中国建设网站题目描述#xff1a; 解题思路#xff1a; 从左到右扫描第一条 DNA 序列和第二条 DNA 序列的每一个位置#xff0c;检查它们是否互补。 如果某个位置不互补#xff0c;我们需要寻找第二条 DNA 序列中后续位置的碱基#xff0c;看是否可以通过交换使这两个位置都互补。如果…题目描述 解题思路 从左到右扫描第一条 DNA 序列和第二条 DNA 序列的每一个位置检查它们是否互补。 如果某个位置不互补我们需要寻找第二条 DNA 序列中后续位置的碱基看是否可以通过交换使这两个位置都互补。如果可以我们就进行交换。 如果在后续位置找不到可以交换的碱基说明这个位置只能通过替换来满足要求。因为每个位置只能修改一次所以我们不能把不配对的碱基交换到当前位置作为中转站则只能进行修改。 每次交换或替换操作计数器增加 1。 最后输出操作计数器的值。
题解
#includebits/stdc.h
using namespace std;mapchar, int pp {{A, 0}, {C, 1}, {G,2}, {T,3}};//pp[A] 0int main()
{int n; cin n;string a,b;cin a b;int cnt 0;for(int i 0; i n; i){if(pp[a[i]] pp[b[i]] ! 3)//不等于3不互补{for(int j i1; j n; j){if(pp[a[i]] pp[b[j]] 3 pp[a[j]] pp[b[i]] 3)//是pp[a[i]]不是pp[i]{swap(b[j], b[i]);//交换b互补两个位置break;}}cnt;}}cout cnt;return 0;
}