40分求助!
5919查看
一个答案错误,五个运行错误
cnt[N]用来存可以用来交换的[i]字符的个数,[1][2][3][4]分别代表ACGT的个数
sdcnt[N]用来存应该变为[i]的字符的个数,[1][2][3][4]分别代表ACGT的个数
代码如下:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int cnt[N];
int sdcnt[N];
int main()
{
int n;cin >> n;
string s1,s2;
for(int i=1;i<=n;i++){
cin >> s1[i];
}
for(int i=1;i<=n;i++){
cin >> s2[i];
}
for(int i=1;i<=n;i++){
if(s1[i] == 'A' && s2[i] != 'T'){
sdcnt[4]++;
if(s2[i] == 'A') cnt[1]++;
}
if(s1[i] == 'C' && s2[i] != 'G'){
sdcnt[3]++;
if(s2[i] == 'C') cnt[2]++;
}
if(s1[i] == 'G' && s2[i] != 'C'){
sdcnt[2]++;
if(s2[i] == 'G') cnt[3]++;
}
if(s1[i] == 'T' && s2[i] != 'A'){
sdcnt[1]++;
if(s2[i] == 'T') cnt[4]++;
}
}
int ans = 0;
while(cnt[1]!=0 && cnt[4]!=0){
cnt[1]--;
cnt[4]--;
sdcnt[1]--;
sdcnt[4]--;
ans ++;
}
while(cnt[2]!=0 && cnt[3]!=0){
cnt[2]--;
cnt[3]--;
sdcnt[2]--;
sdcnt[3]--;
ans ++;
}
int sum_1 = sdcnt[1]+sdcnt[2]+sdcnt[3]+sdcnt[4];
ans += sum_1;
cout << ans << '\n';
return 0;
}
copy
#课程问答
| 关注
你的回复
请
登录
后回复