UVAlive 3602 DNA序列(计数+瞎搞)

来源:互联网 发布:淘宝发布宝贝视频 编辑:程序博客网 时间:2024/06/06 04:03

这个题题意比较明显这样的话直接做就可以了

题目大意:给出N个字符串,每个字符串的长度为M,要求你求出一个字符串,这个字符串的每个位置拥有这N个字符串相应位置字符频数出现最多的那个字符,并求出这N个字符串共有多少个字符和所求字符串不同

代码:

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;const int maxn = 1010;char s[51][maxn];int m,n;int main(){    int t;scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&m);        for(int i =0 ; i < n; i++)        {            scanf("%s",s[i]);        }        int cnt = 0;        for(int i =0 ; i < m ; i++)        {            int A,G,C,T;             A = G = C = T = 0;            for(int j = 0; j < n ; j++)            {                if(s[j][i] == 'A')                    A++;                else if(s[j][i] == 'C')                    C++;                else if(s[j][i] == 'T')                    T++;                else if(s[j][i] == 'G')                    G++;            }            int mmax = max(A,max(G,max(C,T)));            if(mmax == A)            {                printf("A");            }            else if(mmax == C)            {                printf("C");            }            else if(mmax == G)            {                printf("G");            }            else            {                printf("T");            }            cnt += (n - mmax);        }        printf("\n");        printf("%d\n",cnt);    }}