解题思路:
结构体的方法就不多说了,当然不使用结构题也是ok的,比如间接排序。
这里我们来说一种骚操作:
首先,三科分数总和是小于等于300,即最多三位数
其次,语文学科的分数小于等于100,即最多三位数
再次,学员编号是小于等于300的(只是这里题目好像没有数据范围,其他oj的范围都是300),即最多三位数
那么,把总分、语文分数、学号可以组合成一个整数,总分*1000000+语文*1000+999-学号。
因为排序规则是:先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面。所以存储999-i的值那么从大到小排序实际上就是从小到大排序哦。
对于任意一个组合的整数a:学号=999 -a%1000,总分=a/1000000。
注意事项:
拿样例自己先试试呗~
参考代码:
#include <iostream> #include <algorithm> using namespace std; int main() { int n, x, y, z, p[310]; cin >> n; for (int i = 1; i <= n; ++i) { cin >> x >> y >> z; p[i] = (x + y + z) * 1000000 + x * 1000 + 999 - i; } sort(p + 1, p + n + 1); for (int i = n; i >= n - 4; --i) cout << 999 - p[i] % 1000 << " " << p[i] / 1000000 << endl; return 0; }
0.0分
37 人评分
C二级辅导-同因查找 (C++代码)(42的倍数,,所以直接递加42输出)浏览:1091 |
C二级辅导-计负均正 (C语言代码)浏览:586 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:973 |
拆分位数 (C语言代码)浏览:1322 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:534 |
母牛的故事 (C语言代码)浏览:1426 |
Quadratic Equation (C语言代码)浏览:986 |
第三届阿里中间件性能挑战赛-总决赛亚军比赛攻略浏览:1143 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:635 |