下面是代码
#include<stdio.h>
#include<string.h>
main()
{
char qian[55][1010];
int i,n,a,b,biaoji[4],max,j,sum,p;
scanf("%d",&n);
while(n--)
{sum=0;
scanf("%d%d",&a,&b);getchar();
for(i=0;i<a;i++)
gets(qian[i]);
for(i=0;i<b;i++)
{
max=0;
memset(biaoji,0,sizeof(biaoji));
for(j=0;j<a;j++)
{
if(qian[j][i]=='A')biaoji[0]++;
if(qian[j][i]=='C')biaoji[1]++;
if(qian[j][i]=='G')biaoji[2]++;
if(qian[j][i]=='T')biaoji[3]++;
}
for(p=1;p<4;p++)if(biaoji[p]>biaoji[max])max=p;
if(max==0)printf("A");
if(max==1)printf("C");
if(max==2)printf("G");
if(max==3)printf("T");
sum+=biaoji[max];
}printf("\n");
printf("%d\n",a*b-sum);
}
}
这个程序的亮点在于如何统计不同于标准DNA链中字母的数目之和 直接用a*b-sum,sum是标准DNA链中的每个字母在对应位置出现的次数之和。