LA3602DNA序列
阅读原文时间:2023年07月08日阅读:1

**题意:

     给你一个一些DNA序列(只有ACGT)然后让你构造一个序列,使得所有的序列到他的Hamming距离最小,所有的序列包括构造的序列长度都是N,Hamming表示两个序列的不同字符位置个数,比如ACCT AACA 第二个和第四个位置不同,所以距离是2.

思路:

     简单题目,我们一位一位构建,每一位都是独立的,我们选择出现次数最多的字母(如果最多的不止一个,那么我们选择ASCII小的)作为答案,其他的和加到总的距离里面去。

#include

#include

char map[55][1100];

char Ans[1100];

int main ()

{

    int t ,n ,m ,i ,j ,sum;

    int A ,T ,G ,C;

    scanf("%d" ,&t);

    while(t--)

    {

       scanf("%d %d" ,&n ,&m);

       for(i = 1 ;i <= n ;i ++)

       scanf("%s" ,&map[i]);

       sum = 0;

       for(i = 1 ;i <= m ;i ++)

       {

          A = G = C = T = 0;

          for(j = 1 ;j <= n ;j ++)

          if(map[j][i-1] == 'A') A ++;

          else if(map[j][i-1] == 'G') G ++;

          else if(map[j][i-1] == 'C') C ++;

          else T ++;

           int max = A;

           char ch = 'A';

           if(max < C) max = C ,ch = 'C';

           if(max < G) max = G ,ch = 'G';

           if(max < T) max = T ,ch = 'T';

           Ans[i-1] = ch;

           sum = sum + A + G + C + T - max;

    }

    Ans[m] = '\0';

    puts(Ans);

    printf("%d\n" ,sum);

  

   }

   return 0;

}**

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章