您的位置:首页 > 其它

UVa 1368 DNA Consensus String

2017-10-27 15:15 357 查看
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int n,m,t;
char a[55][1005];
int s[4];
char f(int b)
{
switch(b)
{
case 0:return 'A';
case 1:return 'C';
case 2:return 'G';
case 3:return 'T';
}
}
int main()
{
scanf("%d",&t);
while(t--)
{
int cnt=0;
char rst[1005];
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++)
scanf("%s",a[i]);
for(int i=0;i<n;i++)    //对每个字符
{
memset(s,0,sizeof(s));
for(int j=0;j<m;j++)    //对每个串
{
if(a[j][i]=='A') s[0]++;
else if(a[j][i]=='C') s[1]++;
else if(a[j][i]=='G') s[2]++;
else if(a[j][i]=='T') s[3]++;
}
int b=0;
for(int k=1;k<4;k++)//记录出现次数最多且字典序最前的字符
{
if(s[k]>s[b])
b=k;
}
cnt+=m-s[b];
rst[i]=f(b);
}
for(int i=0;i<n;i++)
printf("%c",rst[i]);
printf("\n%d\n",cnt);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: