清华机试oj——成绩排序

港控/mmm° 2022-05-24 11:41 348阅读 0赞

题目描述

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

例示:
jack 70
peter 96
Tom 70
smith 67

从高到低 成绩
peter 96
jack 70
Tom 70
smith 67

从低到高

smith 67

Tom 70
jack 70
peter 96

输入描述:

输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开

输出描述:

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1

输入

  1. 3
  2. 0
  3. fang 90
  4. yang 50
  5. ning 70

输出

  1. fang 90
  2. ning 70
  3. yang 50

——————————————————————————————————

解题思路

利用结构体存姓名与对应成绩,然后stable_sort稳定排序,自己重写两个cmp函数即可。记得要循环输入。

#

代码实现

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct name_grade{
  4. string name;
  5. int grade;
  6. };
  7. int cmp1(name_grade a, name_grade b){//升序
  8. return a.grade < b.grade;
  9. }
  10. int cmp2(name_grade a, name_grade b){//降序
  11. return a.grade > b.grade;
  12. }
  13. int main(){
  14. int n;
  15. while(cin >> n){
  16. name_grade a[n];
  17. int flag; cin >> flag;
  18. for(int i = 0; i < n; i++){
  19. cin >> a[i].name >> a[i].grade;
  20. }
  21. if(flag == 0){
  22. stable_sort(a,a+n,cmp2);
  23. }else if(flag == 1){
  24. stable_sort(a,a+n,cmp1);
  25. }
  26. for(int i = 0; i < n; i++){
  27. cout << a[i].name << " " << a[i].grade << endl;
  28. }
  29. }
  30. return 0;
  31. }

继续加油吧ヾ(◍°∇°◍)ノ゙

发表评论

表情:
评论列表 (有 0 条评论,348人围观)

还没有评论,来说两句吧...

相关阅读

    相关 清华oj——手机按键

    题目描述 按照手机键盘输入字母的方式,计算所花费的时间如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。如果连续两个字符不在同一个按键上,则可直接按

    相关 清华oj——代理服务器

    题目描述 使用代理服务器能够在一定程度上隐藏客户端信息,从而保护用户在互联网上的隐私。我们知道n个代理服务器的IP地址,现在要用它们去访问m个服务器。这 m 个服务器的

    相关 清华oj——二叉树遍历

    题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串:ABC\\DE\G\\F\\\其中“\”表