HDU 1862 EXCEL排序【sort排序】

/*

题目大意:按照EXCEL的要求排序

解题思路:用sort排序

难点详解:如何对字符排序,如何对数字排序

关键点:排序

解题人:lingnichong

解题时间:2014-08-09 17:19:36

解题体会:对理解和熟练运用sort排序,有很大的帮助

*/

EXCEL排序

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 13188    Accepted Submission(s): 5189

Problem Description

Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。

Input

测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号。以下有 N

行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。

Output

对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3

时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。

Sample Input

3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98
4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 90
0 0

Sample Output

Case 1:
000001 Zoe 60
000007 James 85
000010 Amy 90
Case 2:
000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60
Case 3:
000001 Zoe 60
000007 James 85
000002 James 90
000010 Amy 90

Source

浙大计算机研究生复试上机考试-2007年

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

struct per
{
	char number[20];
	char name[20];
	int grade;

}st[100010];

int cmp1(per x,per y)
{
	return strcmp(x.number,y.number)<0;
}

int cmp2(per x,per y)
{
	if(strcmp(x.name,y.name)>0)
		return 0;
	else if(strcmp(x.name,y.name)==0)
	{
		return strcmp(x.number,y.number)<0;
	}
		return 1;
}
int cmp3(per x,per y)
{
	if(x.grade>y.grade)
		return 0;
	else if(x.grade==y.grade)
	{
		return strcmp(x.number,y.number)<0;
	}
		return 1;
}

int  main()
{
	int n,c;
	int i,j,t=1;
	while(scanf("%d%d",&n,&c),(n!=0&&c!=0))
	{
		for(i=0;i<n;i++)
		{
			scanf("%s%s%d",&st[i].number,&st[i].name,&st[i].grade);
		}
		printf("Case %d:\n",t++);
		if(c==1)	sort(st,st+n,cmp1);
		if(c==2)	sort(st,st+n,cmp2);
		if(c==3)	sort(st,st+n,cmp3);
		for(i=0;i<n;i++)
			printf("%s %s %d\n",st[i].number,st[i].name,st[i].grade);
	}
	return 0;
}
时间: 2024-08-04 18:44:15

HDU 1862 EXCEL排序【sort排序】的相关文章

HDU 1862 EXCEL次序 (排序水问题)

Problem Description Excel对能够记录一组由任意列排序指定.现在,请把你编译的代码类似特征. Input 測试输入包括若干測试用例. 每一个測试用例的第1行包括两个整数 N (<=100000) 和 C.当中 N 是纪录的条数,C 是指定排序的列号.下面有 N 行,每行包括一条学生纪录.每条学生纪录由学号(6位数字,同组測试中没有反复的学号).姓名(不超过8位且不包括空格的字符串).成绩(闭区间[0, 100]内的整数)组成.每一个项目间用1个空格隔开.当读到 N=0 时,

HDU 1862 EXCEL排序 (排序水题)

Problem Description Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. Input 测试输入包含若干测试用例.每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号.以下有 N 行,每行包含一条学生纪录.每条学生纪录由学号(6位数字,同组测试中没有重复的学号).姓名(不超过8位且不包含空格的字符串).成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开.当读到 N=0 时,全部输入结

HDU 1862 EXCEL排序(结构体排序)

EXCEL排序 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16387    Accepted Submission(s): 6137 Problem Description Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. Input 测试输入包含若干测试用例.每个测试用例的第1行包含两个整数 N (<=1

hdu 1052(田忌赛马 贪心算法,sort排序)

Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18155    Accepted Submission(s): 5281 Problem Description Here is a famous story in Chinese history. "That was about

sort排序

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>sort排序</title> </head> <body> <script type="text/javascript"> var arr = [3,1,0,7,6,5,4,9]; document.write("原数组:"

关于sort排序

JavaScript的数组排序函数 sort方法,默认是按照ASCII 字符顺序进行升序排列.arrayobj.sort(sortfunction);参数:sortFunction可选项.是用来确定元素顺序的函数的名称.如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列.sort 方法将 Array 对象进行适当的排序:在执行过程中并不会创建新的 Array 对象.如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:负值,如果所传递的第一个参数比

廖雪峰js教程笔记4 sort排序的一些坑

排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来.通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序. JavaScript的Array的sort()方法就是用于排序的,但是

总结: Sort 排序算法

排序总结 面试经验 硅谷某前沿小Startup面试时,问到的一个题目就是写一个快速排序算法.进而面试官问到了各种算法的算法复杂度,进而又问了Merge Sort 与 QuickSort 的优劣. 对排序算法的全面理解,体现了计算机学生的功底. 现在来讲Merge Sort 与Quick Sort 是最流行的算法,以下我们来一步一步地分析: SORT分类 在计算机科学所使用的排序算法通常被分類為: 計算的時間複雜度(最差.平均.和最好表現),依據串列(list)的大小(n).一般而言,好的表現是O

[C/C++标准库]_[初级]_[使用std::sort排序各种类型数据]

std::sort 场景: 1. 在使用sort排序时,有时候需要对对象的某个值进行排序,比如对类对象的某个id的int类型值或者bool类型值,其实bool类型值排序研究了半天.. test_sort.cpp #include <stdlib.h> #include <string.h> #include <string> #include <vector> #include <algorithm> #include <iostream&