为了满足A-T;C-G碱基配对,需要根据第一条序列修改第二条,有以下两种操作:
1.选择第二条序列任意两个位置交换使与第一条序列匹配;
2.选择第二条序列某个未能匹配的位置更换为匹配字符;
//输入
5
ACGTG
ACGTC
//输出
2
代码:
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
public class Main {
public static Map<Character,Integer>mp=new HashMap<>();
static {
mp.put('A',0);
mp.put('C',1);
mp.put('G',2);
mp.put('T',3);
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
sc.nextLine();
String a=sc.nextLine();
String b=sc.nextLine();
int[] bp=new int[n+1];
for(int i=0;i<n;i++){
bp[i]=0;
}
int cnt=0;
for(int i=0;i<n;i++){
if((mp.get(a.charAt(i))+mp.get(b.charAt(i))!=3)&&bp[i]==0)
{
for(int j=i+1;j<n;j++)
{
if((mp.get(a.charAt(i))+mp.get(b.charAt(j))==3)&&(mp.get(a.charAt(j))+mp.get(b.charAt(i))==3)&&bp[j]==0)
{bp[j]=1;
break;}
}
cnt++;
}
}
System.out.println(cnt);
}
}
欢迎提问;