这个题题意比较明显这样的话直接做就可以了
题目大意:给出N个字符串,每个字符串的长度为M,要求你求出一个字符串,这个字符串的每个位置拥有这N个字符串相应位置字符频数出现最多的那个字符,并求出这N个字符串共有多少个字符和所求字符串不同
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int maxn = 1010;
char s[51][maxn];
int m,n;
int main()
{
int t;scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(int i =0 ; i < n; i++)
{
scanf("%s",s[i]);
}
int cnt = 0;
for(int i =0 ; i < m ; i++)
{
int A,G,C,T;
A = G = C = T = 0;
for(int j = 0; j < n ; j++)
{
if(s[j][i] == 'A')
A++;
else if(s[j][i] == 'C')
C++;
else if(s[j][i] == 'T')
T++;
else if(s[j][i] == 'G')
G++;
}
int mmax = max(A,max(G,max(C,T)));
if(mmax == A)
{
printf("A");
}
else if(mmax == C)
{
printf("C");
}
else if(mmax == G)
{
printf("G");
}
else
{
printf("T");
}
cnt += (n - mmax);
}
printf("\n");
printf("%d\n",cnt);
}
}