DNA合成--全国模拟(一)

[编程题] DNA合成
时间限制:1秒
空间限制:32768K
DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以配对合成为DNA的双螺旋结构。现在给出两条碱基链,允许在其中一条上做替换操作:把序列上的某个位置的碱基更换为另外一种碱基。问最少需要多少次让两条碱基链配对成功 
输入描述:
输入包括一行: 包括两个字符串,分别表示两条链,两个字符串长度相同且长度均小于等于50。
 
 
输出描述:
输出一个整数,即最少需要多少次让两条碱基链配对成功
 
输入例子:
ACGT TGCA
 
输出例子:
0
 
解题思路:以字符串a为基准,按位看b是否与之匹配,不匹配count++,匹配比较下一字符
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     string a;
 6     string b;
 7     while(cin>>a>>b)
 8     {
 9         int count = 0;
10         int length_a = a.size();
11         int length_b = b.size();
12         for(int i = 0;i<length_a;i++)
13         {
14             switch(a[i])
15             {
16             case 'A':
17                 if(b[i] == 'T')
18                     break;
19                 else
20                 {
21                     count++;
22                     break;
23                 }
24             case 'C':
25                 if(b[i] == 'G')
26                     break;
27                 else
28                 {
29                     count++;
30                     break;
31                 }
32             case 'G':
33                 if(b[i] == 'C')
34                     break;
35                 else
36                 {
37                     count++;
38                     break;
39                 }
40             case 'T':
41                 if(b[i] == 'A')
42                     break;
43                 else
44                 {
45                     count++;
46                     break;
47                 }
48             }
49         }
50         cout<<count<<endl;
51     }
52     return 0;
53 }


 

原文地址:https://www.cnblogs.com/qqky/p/7027571.html