解題心得
要找到第 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; }
沒有留言:
張貼留言