简单题:暴力计算 32Ms
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 50312 | Accepted: 19682 |
Description
You are responsible for cataloguing a sequence of DNA strings (sequences containing only the four letters A, C, G, and T). However, you want to catalog them, not in alphabetical order, but rather in order of ``sortedness'', from ``most sorted'' to ``least sorted''. All the strings are of the same length.
Input
Output
Sample Input
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
Sample Output
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA
下面贴代码:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
typedef struct
{
string str;
int num; //逆序数
}Node;
int cmp(Node a, Node b) //sort 的比较函数
{
return a.num < b.num;
}
int main()
{
int n, m, i, sum;
Node node[100];
while(scanf("%d", &n) != EOF) //控制输入
{
scanf("%d", &m);
for(i = 0; i < m; i ++)
cin >> node[i].str;
for(i = 0; i < m; i ++)
{
sum = 0;
for(int j = 0; j < n; j ++)
{
for(int k = j + 1; k < n; k ++) //计算逆序数
{
if(node[i].str[j] > node[i].str[k])
sum ++;
}
}
node[i].num = sum;
}
sort(node, node + m, cmp); //排序
for(i = 0; i < m; i ++) //输出
cout << node[i].str << endl;
}
return 0;
}