按ACTG的顺序试出最小解即可
#include<stdio.h>
#include<string.h>
char a[50][1000];
int main()
{
int m,n,t,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);getchar();
memset(a,0,sizeof(a));
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=getchar();
}
getchar();
}
int min=0;
for(j=0;j<n;j++)
{ int min1=0,min2=0,min3=0,min4=0;
for(i=0;i<m;i++)
{
if(a[i][j]!='A') min1++;
if(a[i][j]!='C') min2++;
if(a[i][j]!='G') min3++;
if(a[i][j]!='T') min4++;
}
if(min1<=min2&&min1<=min3&&min1<=min4) {printf("A");min+=min1;}
else if(min2<min1&&min2<=min3&&min2<=min4) {printf("C");min+=min2;}
else if(min3<min1&&min3<min2&&min3<=min4) {printf("G");min+=min3;}
else if(min4<min1&&min4<min2&&min4<min3) {printf("T");min+=min4;}
}
printf("\n%d\n",min);
}
}