3. [2007年NOIP普及组] 奖学金(待敲代码)(待复习排序)!!!!!!!!!

题目描述:

简单来说就是语文英语数学总分和学号,总分>语文>学号的优先级来排序

 

思路1:

结构体模拟过程(1代表从大到小)

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 int n;
 5 struct student{
 6     int yw;
 7     int sx;
 8     int yy;
 9     int num;
10     int sum;
11 }a[305];
12 bool cmp(student a,student b)
13 {
14     if(a.sum>b.sum) return 1;
15     else if(a.sum<b.sum) return 0;
16     else 
17     {
18         if(a.yw>b.yw)return 1;
19         else if(a.yw<b.yw)  return 0;
20         else {
21             if(a.num<b.num)return 1;
22             else return 0;
23         }
24     }
25 }
26 int main()
27 {
28     cin>>n;
29     for(int i=1;i<=n;i++)
30     {
31         cin>>a[i].yw>>a[i].sx>>a[i].yy;
32         a[i].num=i;
33         a[i].sum=a[i].yw+a[i].sx+a[i].yy;
34     }
35     sort(a+1,a+n+1,cmp);
36     for(int i=1;i<=5;i++)
37         cout<<a[i].num<<" "<<a[i].sum<<endl;
38     return 0;
39 }

思路2:

(来自元首大人)

1.将语文排序(这个也需要稳定吗?,语文成绩一样时学号

2.在此基础上对总分进行稳定排序(保证语文优先的顺序不变)

!!!需要复习归并排序等算法

posted @ 2022-09-11 17:35  要不要吃哈密瓜  阅读(31)  评论(0编辑  收藏  举报