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;
}