View Code of Problem 126

#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAX 1000000+10
#define Max(a,b) a>b?a:b
#define Min(a,b) a<b?a:b
struct DNA{
	char data[100];
	int sum;
}s[50],temp;
int main()
{
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		
		int i,j,k;
		for(i=0;i<m;i++)
		{
			scanf("%s",s[i].data);
		}
		int cnt;
		for(i=0;i<m;i++)
		{
			for(j=0;j<n;j++)
			{
				for(k=j;k<n;k++)
				{
					if(s[i].data[j]>s[i].data[k])
					{
						cnt++;
					}
				}
			}
			s[i].sum=cnt;
			cnt=0;
		}
		for(i=1;i<m;i++)
		{
			temp=s[i];
			for(j=i-1;j>=0&&s[j].sum>temp.sum;j--)
			{
				s[j+1]=s[j];
			}
			s[j+1]=temp;
		}
//		for(i=0;i<m;i++)
//		{
//			for(j=i+1;j<m;j++)
//			{
//				if(s[i].sum>s[j].sum)
//				{
//					temp=s[i];
//					s[i]=s[j];
//					s[j]=temp;
//				}
//			}
//		}
		for(i=0;i<m;i++)
		{
			printf("%s\n",s[i].data);
		}
	}

}

Double click to view unformatted code.


Back to problem 126