#include<iostream> #include<string> #include<algorithm> using namespace std; typedef struct { char b[101]; int anum=0; int cnum=0; int tnum=0; int gnum=0; int nixu=0; }DNA; bool cmp(DNA a,DNA b) { if(a.nixu==b.nixu) return true; return a.nixu<b.nixu; } int main() { int n,m; while(cin>>n>>m) { int q=m; DNA dna[1000]; while(m--) { cin.get(); for(int i=0;i<n;i++) { char a; cin.get(a); dna[m].b[i]=a; if(a=='A') { dna[m].anum++; dna[m].nixu=dna[m].nixu+dna[m].cnum+dna[m].tnum+dna[m].gnum; } if(a=='C') { dna[m].cnum++; dna[m].nixu=dna[m].nixu+dna[m].tnum+dna[m].gnum; } if(a=='G') { dna[m].gnum++; dna[m].nixu=dna[m].nixu+dna[m].tnum; } if(a=='T') { dna[m].tnum++; } } } sort(dna,dna+q,cmp); for(int i=0;i<q;i++) { for(int j=0;j<n;j++) { cout<<dna[i].b[j]; if(j==n-1)cout<<endl; } } } } |
Double click to view unformatted code.