“好像Uva的平台已经不能直接使用了?要在google直接搜索相应题号才可以看题目和提交了”
这道题难度不大,思路也比较容易想到。但是我一开始把数组的行下标和列下标颠倒了…花了不少时间。
//额哪里有问题!!!
//统计每一列中出现最多的字母即可
#include<stdio.h>
char dna[60][10010];
char ch[4] = {'A','C','G','T'};
int main(){
int T;
int m,n;
scanf("%d",&T);
while(T--){
int error = 0;
char ans[10010];
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++){
scanf("%s",dna[i]);
}
for(int i=0; i<m; i++){
int num[4] = {0};
for(int j=0; j<n; j++){
if(dna[j][i] == 'A')
num[0]++;
else if(dna[j][i] == 'C')
num[1]++;
else if (dna[j][i] == 'G')
num[2]++;
else num[3]++;
}
int max = 0;
for(int s=1; s<4; s++){
if(num[s] > num[max])
max = s;
}
ans[i] = ch[max];
error = error + n - num[max];
}
for(int i=0; i<m; i++)
printf("%c",ans[i]);
printf("\n");
printf("%d\n",error);
}
return 0;
}