90分 第一个点过不去 ,小六求助 感谢

P5740 【深基7.例9】最厉害的学生

@[homi](/user/944192) 坛子里很多说 000情况,第一个点初始值要-1,不懂为啥呢?
by homi @ 2023-03-05 21:31:39


应该是在输出序号更靠前的那一部分出问题了。 可以看看这个,不用cmp ```cpp #include<bits/stdc++.h> using namespace std; int n; struct student { string name; int num; int cha,math,eng,sum; }; bool cmp(student a,student b) { return a.sum>b.sum; } int main() { student a[1005]; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].name>>a[i].cha>>a[i].math>>a[i].eng; a[i].sum=a[i].cha+a[i].math+a[i].eng; a[i].num = i; } for(int i = 1; i <= n; i ++){ for(int j = 1; j <= n - i; j ++){ if(a[j].sum < a[j + 1].sum){ swap(a[j], a[j + 1]); } else if(a[j].sum == a[j + 1].sum){ if(a[j].num > a[j + 1].num){ swap(a[j], a[j + 1]); } } } } cout<<a[1].name<<" "<<a[1].cha<<" "<<a[1].math<<" "<<a[1].eng; return 0; } ```
by zhczcg314 @ 2023-03-05 21:35:32


@[zhczcg314](/user/680982) 感谢回复,孩子应该对sort不稳定排序理解不深,中午放学按你的思路再思考下,不用sort了。 缘分啊,同一天注册,不过早我们一年。,哈哈 关注了
by homi @ 2023-03-06 07:48:28


|