zoukankan      html  css  js  c++  java
  • 做题记录--day54

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct student{
        char regnum[100];
        int score;
        int listnum;
        int rank;
        int localrank;
    }stu[30010];
    bool cmp(student a,student b)
    {
        if(a.score!=b.score)
            return a.score>b.score;
        return strcmp(a.regnum,b.regnum)<0;
    }
    int main()
    {
        int n,k;
        scanf("%d",&n);
        int count=0;
        int n2=n;
        while(n--)
        {
            scanf("%d",&k);
            int temp=count;
            for(int i=1;i<=k;i++)
            {
                scanf("%s %d",stu[count].regnum,&stu[count].score);
                stu[count++].listnum=n2-n;
            }
            sort(stu+temp,count+stu,cmp);
            stu[temp].localrank=1;
            for(int i=temp+1;i<count;i++)
            {
                if(stu[i].score==stu[i-1].score)
                    stu[i].localrank=stu[i-1].localrank;
                else
                    stu[i].localrank=i-temp+1;
            }
        }
        sort(stu,stu+count,cmp);
        printf("%d
    ",count);
        stu[0].rank=1;
        for(int i=1;i<count;i++)
        {
            if(stu[i].score==stu[i-1].score)
                stu[i].rank=stu[i-1].rank;
            else
                stu[i].rank=i+1;
        }
        for(int i=0;i<count;i++)
            printf("%s %d %d %d
    ",stu[i].regnum,stu[i].rank,stu[i].listnum,stu[i].localrank);
        return 0;
    }
    View Code

    PAT A1025 sort模板题了

    sort(stu,stu+count,cmp)

    stu是数组起始位置,stu+count是最后一位加一个

    左闭右开

    cmp在里面是struct的时候是自定义的。cmp为true的条件就是排序规则

    比如 return a.score>b.score sort在cmp为true不动,说明在a的分数高的时候是保持原状态的,那么说明这是一个降序数组,最高分在前面

    另外注意分数相同的情况下按照大小号排序。

    localrank是在输入的过程中拍出来的,不能都输入进去以后再排。直接sort(stu+temp,stu+count,cmp)

    时间才能证明一切,选好了就尽力去做吧!
  • 相关阅读:
    Android Layout XML属性
    linux]ubuntu挂载U盘
    Android之NDK开发
    Android 创建永不Kill的Service
    如何编写可移植的c/c++代码
    Android写日志文件类
    Android Activity去除标题栏和状态栏
    linux .bash_profile和.bashrc的什么区别
    ListView.setOnItemClickListener、setOnCreateContextMenuListener无效 为什么
    WCF 第四章 绑定 使用队列技术进行通信
  • 原文地址:https://www.cnblogs.com/tingxilin/p/11616383.html
Copyright © 2011-2022 走看看