DNA Consensus String

来源:互联网 发布:男士手表知乎 编辑:程序博客网 时间:2024/06/02 05:28

DNA Consensus String

think:
首先理解题目大意,有n行m列字符,要寻找一串字符,使得对于所有字符来说差异最小,还要计算差异的个数。

#include <bits/stdc++.h>#include <math.h>using namespace std;char s[1211][1211];//存储字符char p[1212];//找到的差异最小的字符串int a[12111][12111];//选找pint main(){   int T, n, m;   cin>>T;   while(T--)   {     cin>>n>>m;     getchar();     memset(a, 0, sizeof(a));     memset(p, 0, sizeof(p));     memset(s, 0, sizeof(s));     for(int i=0;i<n;i++)     {       for(int j=0;j<m;j++)       {         cin>>s[i][j];         a[(int)s[i][j]][j]++;//第几列的字符有几个       }     }     for(int i=0;i<m;i++)     {       int max = 0;       char o;       for(int k='A';k<='Z';k++)       {         if(a[k][i]>max)         {           o = (char)k;           max = a[k][i];         }       }       p[i] = o;     }       cout<<p<<endl;//输出p       int sum = 0;       for(int i=0;i<n;i++)       {         for(int j=0;j<m;j++)         {           if(s[i][j]==p[j]);           else           sum++;         }       }       cout<<sum<<endl;//个数   }    return 0;}
原创粉丝点击