UVA - 1368 DNA Consensus String

来源:互联网 发布:怎样把nginx部署到公网 编辑:程序博客网 时间:2024/05/01 13:32

UVA - 1368 DNA Consensus String

题目大意:给几串DNA 找出一组DNA要求 和这几组DNA 不一样的个数总数最少

解题思路:将每一列中数目最多的DNA找出来组成一组DNA即可

#include <stdio.h>#include <string.h>using namespace std;int main() {    int t;    int s;    int b[1005][4];    char a[55][1005];    scanf("%d", &t);    int n,m;    getchar();    while(t--) {              scanf("%d%d", &m,&n);        s = n*m;        memset(b, 0, sizeof(b));        getchar();        for (int i = 0; i < m; i++) {             for (int j = 0; j < n; j++)                scanf("%c", &a[i][j]);            getchar();         }        for (int j = 0; j < n; j++)             for (int i = 0; i < m; i++) {                if (a[i][j] == 'A')                    b[j][0]++;                    if (a[i][j] == 'C')                    b[j][1]++;                if (a[i][j] == 'G')                    b[j][2]++;                if (a[i][j] == 'T')                    b[j][3]++;            }        int g;        for (int j = 0; j < n; j++) {            int l = b[j][0];            for (int i = 0; i < 4; i++) {                if (b[j][i] > l) {                    l = b[j][i];                    g = i;                }            }            if ( g == 0 )                printf("A");            if ( g == 1 )                printf("C");            if ( g == 2)                printf("G");            if ( g == 3 )                printf("T");            s = s - b[j][g];        }        printf("\n%d\n", s);    }     return 0;}
0 0
原创粉丝点击