hdu 1862 EXCEL排序

 

题目: http://acm.hdu.edu.cn/showproblem.php?pid=1862

 

就是个排序。。

代码比较难打。。还是打少了,题目没看仔细。。wrong了两次。

 

下面是AC代码:

#include<iostream>
using namespace std;
struct node
{
	char num[10],name[10];
	int score;
}st[100005];
int cmp1(const void *a,const void *b)
{
	node *c=(node*)a;
	node *d=(node*)b;
	if(strcmp(c->num,d->num)>0)
		return 1;
	return -1;
}
int cmp2(const void *a,const void *b)
{
	node *c=(node*)a;
	node *d=(node*)b;
	if(strcmp(c->name,d->name)>0)
		return 1;
	
	if(strcmp(c->name,d->name)==0)
	{
		if(strcmp(c->num,d->num)>0)
			return 1;
		return -1;
		
	}
	
	return -1;
}
int cmp3(const void *a,const void *b)
{
	node *c=(node*)a;
	node *d=(node*)b;
	if(c->score==d->score)
	{
		
		if(strcmp(c->num,d->num)>0)
			return 1;
		return -1;
		
		
	}
	
	return c->score>d->score?1:-1;
}
int main()
{
	int n,m;
	int i;
	int ca=1;
	
	while(cin>>n>>m&&n+m)
	{
		for(i=0;i<n;i++)
		{
			cin>>st[i].num>>st[i].name>>st[i].score;
		}
		if(m==1)
			qsort(st,n,sizeof(st[0]),cmp1);
		if(m==2)
			qsort(st,n,sizeof(st[0]),cmp2);
		if(m==3)
			qsort(st,n,sizeof(st[0]),cmp3);
		
		
		
		printf("Case %d:\n",ca++);
		for(i=0;i<n;i++)
		{
			printf("%s %s %d\n",st[i].num,st[i].name,st[i].score);
		}
		
	}
	
	
	return 0;
}


 

 

你可能感兴趣的:(hdu 1862 EXCEL排序)