题目上给的样例input格式存在一定问题,行末多空格。
在这上面纠结了几次……
#include<stdio.h>
#include<string.h>
#include<iostream>
const int maxn = 1100;
int A[maxn];
int C[maxn];
int G[maxn];
int T[maxn];
char ans[maxn];
int ans_;
int m,n;
void judge(int pos)
{
ans[pos]='A';
int max_=A[pos];
if(max_<C[pos])
{
ans[pos]='C';
max_=C[pos];
}
if(max_<G[pos])
{
// printf("****\n");
ans[pos]='G';
max_=G[pos];
}
if(max_<T[pos])
{
ans[pos]='T';
max_=T[pos];
}
// printf("ans[%d] = %c\n",pos,ans[pos]);
if(ans[pos]=='A')
{
ans_+=m-A[pos];
}
if(ans[pos]=='C')
{
ans_+=m-C[pos];
}
if(ans[pos]=='G')
{
ans_+=m-G[pos];
}
if(ans[pos]=='T')
{
ans_+=m-T[pos];
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(A,0,sizeof(A));
memset(C,0,sizeof(C));
memset(G,0,sizeof(G));
memset(T,0,sizeof(T));
char ch;
scanf("%d%d",&m,&n);
getchar();
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%c",&ch);
if(ch=='A')
{
A[j]++;
}
if(ch=='C')
{
C[j]++;
}
if(ch=='G')
{
G[j]++;
}
if(ch=='T')
{
T[j]++;
}
}
getchar();
}
//输出查错
// for(int i=0;i<m;i++)
// {
// for(int j=0;j<n;j++)
// {
// printf("%c",s[i][j]);
// }
// printf("\n");
// }
// for(int i=0;i<n;i++)
// printf(" %d",A[i]);
// printf("\n");
//------------------------------------
memset(ans,0,sizeof(ans));
ans_=0;
for(int i=0;i<n;i++)
{
judge(i);
}
ans[n]=0;
puts(ans);
printf("%d\n",ans_);
}
return 0;
}