POJ1007-DNA Sorting
2018-03-26 22:37
411 查看
DNA Sorting
DescriptionOne measure of ``unsortedness'' in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequence ``DAABEC'', this measure is 5, since D is greater than four letters to its right and E is greater than one letter to its right. This measure is called the number of inversions in the sequence. The sequence ``AACEDGG'' has only one inversion (E and D)---it is nearly sorted---while the sequence ``ZWQM'' has 6 inversions (it is as unsorted as can be---exactly the reverse of sorted).
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.
InputThe first line contains two integers: a positive integer n (0 < n <= 50) giving the length of the strings; and a positive integer m (0 < m <= 100) giving the number of strings. These are followed by m lines, each containing a string of length n.OutputOutput the list of input strings, arranged from ``most sorted'' to ``least sorted''. Since two strings can be equally sorted, then output them according to the orginal order.
链接
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 106816 | Accepted: 42795 |
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.
InputThe first line contains two integers: a positive integer n (0 < n <= 50) giving the length of the strings; and a positive integer m (0 < m <= 100) giving the number of strings. These are followed by m lines, each containing a string of length n.OutputOutput the list of input strings, arranged from ``most sorted'' to ``least sorted''. Since two strings can be equally sorted, then output them according to the orginal order.
链接
一、题意
求一个DNA序列的逆序数,并按照逆序数从小到大顺序输出,对于逆序数相同的DNA按原顺序输出。二、思路
因为数据量不大,所以直接暴力求解就可以,对于排序可以使用STL提供的stable_sort函数。三、代码
#include <iostream> #include <sstream> #include <iomanip> #include <string> #include <numeric> #include <vector> #include <queue> #include <stack> #include <map> #include <set> #include <bitset> #include <utility> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> using namespace std; typedef long long ll; const int MAXN = 110; const int MOD7 = 1000000007; const int MOD9 = 1000000009; const int INF = 2000000000;//0x7fffffff const double EPS = 1e-9; const double PI = 3.14159265358979; const int dir_4r[] = { -1, 1, 0, 0 }; const int dir_4c[] = { 0, 0, -1, 1 }; const int dir_8r[] = { -1, -1, -1, 0, 0, 1, 1, 1 }; const int dir_8c[] = { -1, 0, 1, -1, 1, -1, 0, 1 }; struct Node { int val; char str[60]; }; Node node[MAXN]; bool operator<(const Node &a, const Node &b) { return a.val < b.val; } int main() { int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < m; ++i) { scanf("%s", node[i].str); node[i].val = 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]) node[i].val++; } stable_sort(node, node + m); for (int i = 0; i < m; ++i) printf("%s\n", node[i].str); //system("pause"); return 0; }
相关文章推荐
- POJ-1007 DNA Sorting
- STL 应用2 POJ 1007 DNA Sorting 题解 (STL完美解答)
- POJ - 1007 - DNA Sorting
- POJ 1007 DNA Sorting
- 【POJ】1007 DNA Sorting
- poj 1007 DNA Sorting(STL运用)
- 【原】 POJ 1007 DNA Sorting 逆序数 解题报告
- POJ 1007 DNA Sorting
- POJ 1007 DNA Sorting(简单排序)
- 【POJ】1007 DNA Sorting
- poj1007 - DNA Sorting
- POJ 1007 DNA Sorting
- poj 1007 DNA sorting
- poj 1007 DNA sorting
- POJ-1007 DNA Sorting
- poj1007——DNA Sorting
- POJ-1007 DNA Sorting
- poj 1007 DNA Sorting
- POJ 1007 DNA Sorting
- POJ 1007 DNA Sorting