算法考察:字符串贪心
//DNA序列
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
char str[60][1010];
int main()
{
int T;
cin >> T;
while (T--)
{
int n, m;
cin >> m >> n;
char ansStr[n];
unordered_map<char, int> map;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
cin >> str[i][j];
for (int i = 0; i < n; i++)
{
map['A'] = 0;
map['C'] = 0;
map['G'] = 0;
map['T'] = 0;
for (int j = 0; j < m; j++)
map[str[j][i]]++;
int maxv = 0;
char aim;
if (maxv < map['A'])
{
maxv = map['A'];
aim = 'A';
}
if (maxv < map['C'])
{
maxv = map['C'];
aim = 'C';
}
if (maxv < map['G'])
{
maxv = map['G'];
aim = 'G';
}
if (maxv < map['T'])
{
maxv = map['T'];
aim = 'T';
}
ansStr[i] = aim;
}
int cnt = 0;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (str[i][j] != ansStr[j])
cnt++;
}
}
for (int i = 0; i < n; i++)
printf("%c", ansStr[i]);
printf("\n");
printf("%d\n", cnt);
}
return 0;
}