3.7 DNA Consensus String UVA1368

来源:互联网 发布:php和mysql分开吗 编辑:程序博客网 时间:2024/06/03 19:41

题目链接:点击打开链接

本来以为是输出其中一个,原来是输出新组合的,英语是硬伤

#include <stdio.h>#include <string.h>#define MAXL 1000int findmin(int z[]);int main(){    int T,z[4];    char str[50][MAXL+1];    //printf("%d",sizeof(z));    scanf("%d", &T);    while(T--)    {        int m, n, i, j, k = 0;        char last[MAXL+1] = {'\0'};        //memset(last, '\0', sizeof(last));        memset(str, '\0', sizeof(str));        scanf("%d %d",&m, &n);getchar();        for(i= 0; i < m; i++)            for(j = 0; j < n; j++)            {str[i][j] = getchar();if(j == n - 1) getchar();}        /*for(i= 0; i < m; i++)            for(j = 0; j < n; j++)            {printf("%c ",str[i][j]);}*/        for(j = 0; j < n; j++)        {            memset(z, 0, sizeof(z));            for(i = 0; i < m; i++)            {                switch(str[i][j])                {                    case 'A':z[0]++;break;                    case 'C':z[1]++;break;                    case 'G':z[2]++;break;                    case 'T':z[3]++;break;                }            }        switch(findmin(z))        {            case 0: last[j] = 'A'; k += m-z[0];break;//ÌâÄ¿Òª¶Á¶®£¬Ó¢ÓïÊÇÓ²ÉË            case 1: last[j] = 'C'; k += m-z[1];break;            case 2: last[j] = 'G'; k += m-z[2];break;            case 3: last[j] = 'T'; k += m-z[3];break;        }        }        for(i = 0; last[i] != '\0'; i++)            printf("%c",last[i]);        printf("\n%d\n",k);    }    return 0;}int findmin(int z[]){    int i = 0;    if(z[i] < z[1]) i = 1;    if(z[i] < z[2])        i = 2;    if(z[i] < z[3])        i = 3;    return i;}