主要是求字符串的逆序数和排序
对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 }
原文:http://www.cnblogs.com/marlenemizuno/p/6362439.html