【题意】给定m个长度为n的DNA序列,求一个DNA序列,使其到所有DNA序列的Hamming距离尽量小!
【解题思路】贪心+模拟!
【AC代码】
//cpp try two pointers
#include <bits/stdc++.h>
using namespace std;
const int MN=55;
const int MM=1005;
char s[MN][MM];
int usn[26];
char ans[MM];
int main()
{
int t,m,n;
int sum;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
scanf("%s",s[i]);
sum=0;
for(int i=0;i<n;i++)
{
memset(usn,0,sizeof(usn));
for(int j=1;j<=m;j++)
usn[s[j][i]-'A']++;
int maxn=0,np=0;
for(int j=0;j<26;j++)
{
if(usn[j]>maxn)
{
maxn=usn[j];
np=j;
}
}
ans[i]='A'+np;
sum+=m-maxn;
}
ans[n]=0;
printf("%s\n%d\n",ans,sum);
}
return 0;
}