题目的意思是:给你m个等长的DNA序列,求解的Consensus String 的第 i 个是每 i 列出现最多的字符,有相同大小的,按字典序排。
而consensus error是每一列不同的字符数之和。
下面的是AC的代码:
#include <iostream>
#include <cstring>
using namespace std;
char str[50][1005];
int ans[4];
int main()
{
// freopen("1368.txt", "r", stdin);
int t, m, n, i, j, k;
char res[1005];
cin >> t;
while(t--)
{
cin >> m >> n;
for(i = 0; i < m; i++)
cin >> str[i];
int a, t, c, g;
k = 0;
for(i = 0; i < n; i++)
{
a = t = c = g = 0;
for(j = 0; j < m; j++)
{
if(str[j][i] == 'A')
a++;
else if(str[j][i] == 'T')
t++;
else if(str[j][i] == 'C')
c++;
else
g++;
}
if(a >= t && a >= c && a >= g)
{
res[i] = 'A';
k += m - a;
}
else if(c >= a && c >= t && c >= g)
{
res[i] = 'C';
k += m - c;
}
else if(g >= a && g >= c && g >= t)
{
res[i] = 'G';
k += m - g;
}
else if(t >= a && t >= c && t >= g)
{
res[i] = 'T';
k += m - t;
}
}
res[n] = '\0';
cout << res << endl;
cout << k << endl;
}
return 0;
}