View Code of Problem 126

#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.


Back to problem 126