PKU 1007 DNA Sorting
2010-08-08 10:52
295 查看
DNA Sorting
Description
One
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.
Input
The
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.
Output
Output
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.
Sample Input
Sample Output
Source
East Central North America 1998
code:
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 47618 | Accepted: 18598 |
One
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.
Input
The
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.
Output
Output
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.
Sample Input
10 6 AACATGAAGG TTTTGGCCAA TTTGGCCAAA GATCAGATTT CCCGGGGGGA ATCGATGCAT
Sample Output
CCCGGGGGGA AACATGAAGG GATCAGATTT ATCGATGCAT TTTTGGCCAA TTTGGCCAAA
Source
East Central North America 1998
code:
]#include <iostream> #include <algorithm> using namespace std; struct node { int inver; char DNA[52]; }dna[105]; bool cmp(node a,node b) { return a.inver<b.inver; } int inverse(const char * a,int len) { int count=0; int dna[4]={0}; for(int i=len-1;i>=0;i--) { switch(a[i]) { case 'A': dna[1]++; dna[2]++; dna[3]++; break; case 'C': dna[2]++; dna[3]++; count+=dna[1]; break; case 'G': dna[3]++; count+=dna[2]; break; case 'T': count+=dna[3]; } } return count; } int main() { int n;int m; int i,j; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<m;i++) { scanf("%s",&dna[i].DNA); dna[i].inver=inverse(dna[i].DNA,n); } sort(dna,dna+m,cmp); for(i=0;i<m;i++) { printf("%s/n",dna[i].DNA); } } return 0; }
相关文章推荐
- DNA Sorting-PKU ACM 1007
- acm pku 1007 DNA Sorting
- pku 1007 DNA Sorting
- PKU_1007_DNA Sorting
- PKU_1007 DNA sorting
- PKU ACM 1007题“DNA Sorting”的一种解法
- 【POJ】1007 DNA Sorting
- POJ 一 1007 DNA Sorting
- 算法:POJ1007 DNA sorting
- ACM 1007 DNA Sorting
- 北大OJ_1007题:DNA Sorting
- POJ 1007 DNA Sorting
- POJ_1007_DNA Sorting
- poj-1007 DNA sorting
- POJ-1007 DNA Sorting
- POJ 1007 DNA Sorting
- 【Peking University Online Judge】1007(DNA Sorting)
- 北大PKU在线测试1007
- [POJ] 1007 -> DNA Sorting
- POJ 1007 DNA Sorting (归并排序)