解題心得
要找到第 i 個會是哪個字母,就去統計所有的字串的第 i 個都是哪些字母,找出現最多的那個。如果出現次數相同,則按照字典序順序,所以判斷式的等於才會那樣寫。
要計算 hamming 距離,就是統計不符合的字元次數。
程式碼
#include <iostream>
using namespace std;
int main()
{
int t, m, n;
string s[50];
cin >> t;
while (t--)
{
cin >> m >> n;
for (int i = 0; i < m; i++)
cin >> s[i];
string ans = "";
int d = 0;
for (int i = 0; i < n; i++)
{
int countA = 0, countT = 0, countC = 0, countG = 0;
for (int j = 0; j < m; j++)
{
if (s[j][i] == 'A') countA++;
else if (s[j][i] == 'T') countT++;
else if (s[j][i] == 'C') countC++;
else if (s[j][i] == 'G') countG++;
}
if (countA >= countC && countA >= countG && countA >= countT)
ans += "A", d += countC + countG + countT;
else if (countC > countA && countC >= countG && countC >= countT)
ans += "C", d += countA + countG + countT;
else if (countG > countA && countG > countC && countG >= countT)
ans += "G", d += countC + countA + countT;
else
ans += "T", d += countC + countG + countA;
}
cout << ans << endl << d << endl;
}
return 0;
}
沒有留言:
張貼留言