Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<iomanip>
- #include <cmath>
- #include<string>
- using namespace std;
- int n, m;
- class DNA {
- public:
- DNA() :str(""), order(0) {};
- DNA(string in) :str(in), order(0) {};
- string str;
- int order;
- void count_order();
- };
- int main()
- {
- while (cin >> m >> n)
- {
- DNA *dna=new DNA[n];
- for (int i = 0; i < n; i++)
- {
- string temp;
- cin >> temp;
- dna[i] = DNA(temp);
- dna[i].count_order();
- //cout << "***order" << dna[i].order << endl;
- }
- DNA* ans = new DNA[n];
- for (int i = 0; i < n; i++)
- {
- int min_order = 99999, min_num = -1;
- for (int j = 0; j < n; j++)
- {
- if (dna[j].order < min_order)
- {
- min_order = dna[j].order;
- min_num = j;
- }
- }
- //cout << "pick " << min_num << endl;
- ans[i] = dna[min_num];
- dna[min_num].order = 99999;
- }
- for (int i = 0; i < n; i++)
- {
- cout << ans[i].str << endl;
- //cout << "===order" << ans[i].order << endl;
- }
- }
- }
- void DNA::count_order()
- {
- int ans = 0;
- for (int i = 0; i < m; i++)
- {
- for (int j = i + 1; j < m; j++)
- {
- if (int(str[i]) > int(str[j]))
- {
- //cout << str[i] << ">" << str[j] << endl;
- ++ans;
- }
- }
- }
- this->order = ans;
- }
- /*
- 6 5
- ATTTGC
- GCGCAT
- ATGCCC
- CCCCGT
- AAACTG
- */
- /*
- 開發一隻程式來測量DNA字串的度量值是DNA是不規則單元的數量,例如,在字母序列“ DAAAFC ”中,此度量為5,因為D大於其右邊的四個字母,F大於其右邊的一個字母,該度量是稱為序列中的反轉數。
- 例如:序列“ AACEDGG ”只有一個要交換(E和D) ,此度量為1 ,序列“ ZWSD ” ,此度量為6 。
- 雖然DNA字符串序列(僅包含四個字母A,C,G和T的序列),但是會有不同字母順序對它們進行分類,而要按“排序”的順序對它們進行分類,從“最排序”到“最不排序。 所有的字符串都具有相同的長度。
- 輸入說明:
- 每個數據集的第一行包含兩個整數:給出字串長度的正整數n(0<n≤100); 和一個正整數m(0<m≤100)給出字串數。
- 它們之後是m行,每行包含一個長度為n的字符串。
- 輸出說明:
- 在整組DNA字串集去排列符合題目
- SAMPLE INPUT
- 6 5↵
- ATTTGC↵
- GCGCAT↵
- ATGCCC↵
- CCCCGT↵
- AAACTG↵
- SAMPLE OUTPUT
- CCCCGT↵
- AAACTG↵
- ATTTGC↵
- GCGCAT↵
- ATGCCC↵
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement