Sundayyylsy 2022-09-02 18:46 采纳率: 66.7%
浏览 9
已结题

PAT乙级1085 vector排序

题目https://zhanglong.blog.csdn.net/article/details/112971582

我的代码

#include<bits/stdc++.h>
using namespace std;
struct school{
    string name;
    double score=0;//带小数的精确分数
    int scoref;//将成绩保留整数部分
    int num=0;//人数
};
int cmp(school s1,school s2)
{
    if(s1.scoref!=s2.scoref) return s1.scoref>s2.scoref;//降序
    else{
        if(s1.num!=s1.num) return s1.num<s2.num;//升序
        else return s1.name<s2.name;
    }
}

int main()
{
    vector<school> v;
    int n,i;
    cin>>n;
    map<string,school>a;
    for(i=0;i<n;i++)
    {
        string stuid,sid;//分别为准考证号、学校
        double fen;//得分
        cin>>stuid>>fen>>sid;
        transform(sid.begin(),sid.end(),sid.begin(),::tolower);
        if(stuid[0]=='B') fen/=1.5;
        if(stuid[0]=='T') fen*=1.5;
        a[sid].score+=fen;
        a[sid].num++;
    }
    for (map<string, school>::iterator iter = a.begin(); iter != a.end(); ++iter) {
        iter->second.scoref=(int)iter->second.score;
        v.push_back(iter->second);
        v.back().name=iter->first;
    }
    cout<<v.size()<<endl;
    sort(v.begin(),v.end(),cmp);
    int z=1;//辅助标记排名
    cout<<z<<' '<<v[0].name<<' '<<v[0].scoref<<' '<<v[0].num<<endl;
    for(i=1;i<v.size();i++) {
        if(v[i].scoref==v[i-1].scoref)
            cout<<z<<' '<<v[i].name<<' '<<v[i].scoref<<' '<<v[i].num<<endl;
        else{
            cout<<i+1<<' '<<v[i].name<<' '<<v[i].scoref<<' '<<v[i].num<<endl;
            z=i+1;
        }
        
    }
}

运行结果

img


左边是正确答案,右边是我的,求问为啥分数一样的时候人数排反了呀T T,我真的看不出来了

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-09-02 19:11
    关注

    if(s1.num!=s1.num) return s1.num<s2.num;//升序
    写错了啊,是if(s1.num != s2.num)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月10日
  • 已采纳回答 9月2日
  • 创建了问题 9月2日

悬赏问题

  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗