嘿嘿嘿,一次AC了
//#define TESTING
//#define LOCAL
#include<stdio.h>
#include<ctype.h>
#include<string.h>
char s[55][1005],h[55],r[1005];
int main()
{
#ifdef LOCAL
freopen("xt3-7.in","r", stdin);
#endif
int m,n,T,tot;
char temp;
scanf("%d", &T);
while(T--)
{
memset(s,0,sizeof(s));
memset(h,0,sizeof(h));
memset(r,0,sizeof(r));
tot = 0;
//读取个数m,长度n
scanf("%d %d", &m, &n);
getchar();
//读取个数m,长度n结束
//读取DNA序列
char temp;
temp = getchar();
if(isalpha(temp))
{
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if(i+j == 0) s[0][0] = temp;
else s[i][j] = getchar();
if(!isalpha(s[i][j])) j--;
}
}
}
//读取DNA序列结束
//计算、记录各位最小Hamming字符 及Hamming值
for(int i = 0;i < n; i++)
{
int a=0,c=0,g=0,t=0;
for(int j = 0; j < m; j++)
{
if(s[j][i]=='A') a++;
else if(s[j][i]=='C') c++;
else if(s[j][i]=='G') g++;
else t++;
}
int max = a;
if(max<c) max = c;
if(max<g) max = g;
if(max<t) max = t;
if(max == a)
{
r[i]='A';
tot = tot+c+g+t;
}
else if(max == c)
{
r[i]='C';
tot = tot+a+g+t;
}
else if(max == g)
{
r[i]='G';
tot = tot+a+c+t;
}
else if(max == t)
{
r[i]='T';
tot = tot+a+c+g;
}
}
//计算、记录各位最小Hamming字符 及Hamming值结束
//输出
#ifdef TESTING
printf("T:%d\n",T);
printf("m:%d n:%d\n", m, n);
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
printf("%c", s[i][j]);
}
printf("\n");
}
printf("\n");
#endif
for(int i = 0; i <n; i++)printf("%c", r[i]);
printf("\n");
printf("%d", tot);
printf("\n");
//输出结束
}
return 0;
}