Poj 1007

主要是求字符串的逆序数和排序

对sort()函数的应用还要多熟悉才好

 1 #include<iostream>
 2 #include<algorithm> 
 3 using namespace std;
 4 
 5 struct DNA{
 6         int num;
 7         int inv;
 8     };
 9 
10 int inversion(string s){
11     int len=s.length();
12     int k=0;
13     int A=0,C=0,G=0,T=0;
14     for(int i=0;i<len;i++){
15             switch(s[i]){
16                 case 'A':{
17                     A++;
18                     k+=C;
19                     k+=G;
20                     k+=T;
21                     break;
22                 }
23                 case 'C':{
24                     C++;
25                     k+=G;
26                     k+=T;
27                     break;
28                 }
29                 case 'G':{
30                     G++;
31                     k+=T;
32                     break;
33                 }
34                 case 'T':{
35                     T++;
36                     break;
37                 }
38             }
39     }
40     return k;
41 }
42 
43 int cmp(DNA a,DNA b)  
44 {
45     return a.inv<b.inv;  //升序排列
46 }
47 
48 int main(){
49     int m,n;
50     cin>>m>>n;
51     string str[100];
52     DNA test[100];
53     for(int i=0;i<n;i++){
54         cin>>str[i];
55         test[i].num=i;
56         test[i].inv=inversion(str[i]);
57     }
58     sort(test,test+n,cmp);
59     for(int i=0;i<n;i++){
60         cout<<str[test[i].num]<<endl;
61     }
62 } 

 

posted @ 2017-02-03 12:34  水野玛琳  阅读(139)  评论(0)    收藏  举报