hdu 1862 EXCEL排序

标签: hdu 1862 EXCEL排序
3人阅读 评论(0) 收藏 举报
分类:

题目链接(请点击)
思路:这个题并不难,主要是把,怎样排序的函数写好就行(cmp1,cmp2,cmp3)。题目中当C==2时要求按照姓名的非递减字典序排序,所以自己想着如果用string定义姓名name这个字符串,可以直接进行字母比较,故用string。

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct Student
{
    int id,grade;
    string name;
}stu[100000];
int cmp1(Student a,Student b)
{
    return a.id<b.id;
}
int cmp2(Student a,Student b)
{
    if(a.name!=b.name)
        return a.name<b.name;
    else return a.id<b.id;
}
int cmp3(Student a,Student b)
{
    if(a.grade!=b.grade)
        return a.grade<b.grade;
    else return a.id<b.id;
}
int main()
{
    int N,C,ans=1;
    while(cin>>N>>C&&N)
    {
        for(int i=0;i<N;i++)
            cin>>stu[i].id>>stu[i].name>>stu[i].grade;
        if(C==1) sort(stu,stu+N,cmp1);
        else if(C==2) sort(stu,stu+N,cmp2);
        else sort(stu,stu+N,cmp3);
        cout<<"Case "<<ans<<":"<<endl;
        for(int i=0;i<N;i++)
        {
            printf("%06d ",stu[i].id);
            cout<<stu[i].name<<" "<<stu[i].grade<<endl;
        }
        ans++;
    }
    return 0;
}

需要注意的是 string不能用printf输出会报错。printf不能输出string类定义的字符串,因为string是扩展的一个类,而并非内部的,不能直接用printf输出。原本自己在输出时全部都用的printf(学号6位前面很可能需要补空格,就想着用printf直接就是%06d好一些,但是报错了,当然学号要是定义成字符串类型的就另当别论了)这是需要注意的。

查看评论

hdu--1862 EXCEL排序

#include #include #include using namespace std; const int Max=100000; struct stu{ int no; ch...
  • u011346442
  • u011346442
  • 2014-11-04 22:24:26
  • 275

杭电hdu 1862 EXCEL排序 qsort

http://acm.hdu.edu.cn/showproblem.php?pid=1862 简单的qsort二级排序 #include #include #include #include...
  • wchyumo2009
  • wchyumo2009
  • 2012-05-07 18:58:59
  • 1105

EXCEL排序(杭电1862)(sort排序)

EXCEL排序 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total...
  • hdd871532887
  • hdd871532887
  • 2014-11-08 17:02:25
  • 770

EXCEL排序 HDU - 1862

EXCEL排序Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。 Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (...
  • DNMTOOBA
  • DNMTOOBA
  • 2017-04-06 09:32:09
  • 143

HDU 1862 EXCEL排序

EXCEL排序 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total...
  • qq_35252878
  • qq_35252878
  • 2016-08-15 19:21:07
  • 85

hdu 1862 EXCEL排序

EXCEL排序 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total...
  • u014634338
  • u014634338
  • 2014-07-22 14:43:03
  • 324

hdu(1862)EXCEL排序

#include #include #include struct point { int z; char x[60],y[60]; }p[100006]; int cmp1(cons...
  • u011519618
  • u011519618
  • 2013-08-04 15:10:02
  • 388

hdu 1862 EXCEL排序

Problem Description Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。   Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个整...
  • qqjijieyu
  • qqjijieyu
  • 2014-08-11 15:31:23
  • 189

HDU 1862 EXCEL排序

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1862 EXCEL排序 Time Limit: 10000/5000 MS (Java/Othe...
  • u013615904
  • u013615904
  • 2015-01-02 20:32:58
  • 259

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

EXCEL排序 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016-05-07 03:26:09
  • 3035
    个人资料
    持之以恒
    等级:
    访问量: 2139
    积分: 369
    排名: 22万+