文章

35

粉丝

134

获赞

55

访问

25.3k

头像
成绩排序 题解:c++ stable_sort函数解决
P1151 清华大学上机题
发布于2024年1月14日 19:42
阅读数 1.1k

#include <bits/stdc++.h>
using namespace std;
struct node{
    string name;
    int score;
};
int cmp1(node n1,node n2){
    return n1.score>n2.score;    
}
int cmp2(node n1,node n2){
    return n1.score<n2.score;    
}
int main(){
    int n,m;
    while(cin>>n>>m){
        node arr[n];
        for(int i=0;i<n;i++){
            cin>>arr[i].name>>arr[i].score;
        }
        if(m==0){
            stable_sort(arr,arr+n,cmp1);//底层是归并排序,可以保持稳定
        }
        if(m==1){
            stable_sort(arr,arr+n,cmp2);
        }
        for(int i=0;i<n;i++){
            cout<<arr[i].name<<" "<<arr[i].score<<endl;
        }
        
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

2 条评论
stitch
2024年3月1日 16:37

node arr[n];作为数组的声明是不合法的,会导致编译错误。要解决这个问题,可以使用动态内存分配来创建一个可变长度的数组。

可以使用以下方式来创建一个动态数组:

node* arr = new node[n];

赞(1)

小李122333 : 回复 stitch: 你好,不是很懂你说的,ac100%,怎么就不合法了呢?

2024年3月2日 20:12