DNA合成--全国模拟

Posted qqky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }


 

以上是关于DNA合成--全国模拟的主要内容,如果未能解决你的问题,请参考以下文章

什么叫半保留复制?有何特点?

第2题——DNA片段

POJ2778DNA Sequence(AC自动机)

POJ3691DNA repair(AC自动机,DP)

关于一些DNA密码的问题,跪求答案

外显子捕获的操作步骤