SDNU 1093.DNA排序(水题)
生活随笔
收集整理的這篇文章主要介紹了
SDNU 1093.DNA排序(水题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
逆序數可以用來是描述一個序列混亂成度的量。例如,“DAABEC”的逆序數為5,其中D大于它右邊的4個數,E大于它右邊的1個數,4+1=5;又例如“ZWQM”的逆序數為3+2+1+0=6。現在有許多長度一樣的字符串,每個字符串里面只會出現四種字母(A,T,G,C)。你現在被要求編寫程序將這些字符串按照他們的逆序數進行排序
Input
第一行包括兩個正整數,第一個正整數N給出了字符串的長度,第二個正整數M給出了字符串的數量。(1<=N,M<=100) 接下來M行每行一個長度為N的字符串,只包含A,T,G,C四種字母。Output
將輸入的字符串按照其逆序數進行排序,如果兩個字符串的逆序數相等,則按照輸入中兩者的先后順序進行排列。Sample Input
10 6 AACATGAAGG TTTTGGCCAA TTTGGCCAAA GATCAGATTT CCCGGGGGGA ATCGATGCATSample Output
CCCGGGGGGA AACATGAAGG GATCAGATTT ATCGATGCAT TTTTGGCCAA TTTGGCCAAAHint
選擇排序是不穩定的Source
HRBEU #include<bits/stdc++.h> using namespace std;#define ll long long #define eps 1e-9const int inf = 0x3f3f3f3f; const int mod = 1e9+7; const int maxn = 100000 + 8;int n, m; char c[1000 + 8][1000 + 8];struct node {char c[1000 + 8];int num, id; }a[1000 + 8];bool cmp(node a, node b) {if(a.num != b.num)return a.num < b.num;return a.id < b.id; }int main() {std::ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>m;for(int i = 0; i < m; i++){a[i].num = 0;for(int j = 0; j < n; j++){cin>>c[i][j];a[i].c[j] = c[i][j];a[i].id = i;}}for(int i = 0; i < m ; i++)for(int j = 0; j < n - 1; j++)for(int k = j + 1; k < n; k++)if(c[i][j] > c[i][k])a[i].num++;sort(a, a + m, cmp);for(int i = 0; i < m; i++){for(int j = 0; j < n; j++)cout<<a[i].c[j];cout<<'\n';}return 0; }?
轉載于:https://www.cnblogs.com/RootVount/p/11420744.html
總結
以上是生活随笔為你收集整理的SDNU 1093.DNA排序(水题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SDNU 1029.巧分整数(斯特林数(
- 下一篇: pygame外星人