hdu 1862 EXCEL排序【结构体排序】

简介: hdu 1862 EXCEL排序【结构体排序】

EXCEL排序

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 25443    Accepted Submission(s): 9031


 

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年

 

主要是看对结构体的排序问题,其它没什么难点。

AC代码如下:

//1431
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct student
{
    char xh[10];
    char xm[10];
    int cj;
}s[100000];
int cmp1(student x,student y) //排序1
{
    if(strcmp(x.xh,y.xh)<0)
       return 1;
    return 0;
}
int cmp2(student x,student y) //排序2
{
    if(strcmp(x.xm,y.xm)<0)
        return 1;
    else if(strcmp(x.xm,y.xm)==0 && strcmp(x.xh,y.xh)<0)
        return 1;
    return 0;
}
int cmp3(student x,student y)//排序3
{
    if(x.cj<y.cj)
        return 1;
    else if(x.cj==y.cj && strcmp(x.xh,y.xh)<0)
        return 1;
    return 0;
}
int main()
{
    int n,c,ans=0;
    while(scanf("%d %d",&n,&c)!=EOF&&n)
    {
        ans++;
        int i;
        for(i=0;i<n;i++)
            scanf("%s%s%d",s[i].xh,s[i].xm,&s[i].cj);
        /*switch(c)
        {
        case 1:
            sort(s,s+n,cmp1);
            break;
        case 2:
            sort(s,s+n,cmp2);
            break;
        case 3:
            sort(s,s+n,cmp3);
            break;
        }*/
        if(c==1) sort(s,s+n,cmp1);
        if(c==2) sort(s,s+n,cmp2);
        if(c==3) sort(s,s+n,cmp3);
        printf("Case %d:\n",ans);
        for(i=0;i<n;i++)
            printf("%s %s %d\n",s[i].xh,s[i].xm,s[i].cj);
    }
    return 0;
}
目录
相关文章
|
数据可视化 Python
R7-9 模拟EXCEL排序
R7-9 模拟EXCEL排序
81 0
对比excel,如何在Python中实现 “自定义文本” 排序!
对比excel,如何在Python中实现 “自定义文本” 排序!
对比excel,如何在Python中实现 “自定义文本” 排序!
|
搜索推荐 算法 Java
HDOJ(HDU) 1862 EXCEL排序(类对象的快排)
HDOJ(HDU) 1862 EXCEL排序(类对象的快排)
97 0
POI 导出excel设置排序和过滤,样式
设置样式: private CellStyle setRowStyle(Workbook wb) { CellStyle style = wb.createCellStyle(); // 边框填充 style.
2655 0
|
算法 Java 测试技术
HDOJ(HDU) 1862 EXCEL排序(类对象的快排)
Problem Description Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。 Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N ( c)根据指定比较器产生的顺序对指定对象数组进行排序。
1007 0
|
30天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
3月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
171 4