题解 | #成绩排序# 非常简单 一看就会

成绩排序

https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1

#include <iostream>
#include<string>
#include<algorithm>
using namespace std;

struct student{
    string name;
    int score;
    int rank;
}stu[1000];

bool cmp1(student st1, student st2){
    if(st1.score == st2.score ){
        return st1.rank < st2.rank;
    }else{
        return st1.score > st2.score;
    }
}

bool cmp2(student st1, student st2){
    if(st1.score == st2.score ){
        return st1.rank < st2.rank;
    }else{
        return st1.score < st2.score;
    }	
}

int main() {
	//freopen("in.txt","r",stdin);
    int n,k;
    while(cin >> n >> k) { // 注意 while 处理多个 case
        for(int i=0; i<n; i++){
            cin >> stu[i].name ;//读入 name score rank 进入struct 
            cin >> stu[i].score;
            stu[i].rank = i;//通过rank保证先输入的先输出
        }
        if(k==0){//cmp1
        	sort(stu, stu+n, cmp1);
		}else{//cmp2
			sort(stu, stu+n, cmp2);
		}
		for(int i=0; i<n; i++){//输出
			cout << stu[i].name << " ";
           	cout << stu[i].score << endl;
		}
    }
}

全部评论

相关推荐

11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务