poj 1007 DNA Sorting
DNA Sorting
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 76039 | Accepted: 30490 |
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.
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
题意:
給m串长n的字符串,其价值为每字符比后面字符大的个数的和,按价值从小到大排序m串字符并输出
我是直接用容器暴力的,也可以用其他排序
1 //Accepted 228K 32MS C++ 809B 2013-10-13 17:18:38 2 //简单的容器练习题.. 3 #include<iostream> 4 #include<algorithm> 5 #include<string> 6 #include<map> 7 using namespace std; 8 map<string,int>M; 9 int n,m,a[105]; 10 int get(string s) //得到价值 11 { 12 int len=s.length(); 13 int sum=0; 14 for(int i=0;i<len;i++) 15 for(int j=i+1;j<len;j++) 16 if(s[i]>s[j]) sum++; 17 return sum; 18 } 19 int main(void) 20 { 21 string s; 22 while(cin>>m>>n) 23 { 24 for(int i=0;i<n;i++){ 25 cin>>s; 26 M[s]=get(s); 27 a[i]=M[s]; 28 } 29 sort(a,a+n); 30 for(int i=0;i<n;i++){ 31 //cout<<a[i]<<endl; 32 for(map<string,int>::iterator it=M.begin();it!=M.end();it++){ //遍历n串 33 if((it->second)==a[i]) 34 cout<<it->first<<endl; 35 //break; 36 } 37 } 38 } 39 return 0; 40 }