zoukankan      html  css  js  c++  java
  • PAT:1080. Graduate Admission (30) 部分错误(录取以学校为导向而不是考生志愿为导向导致的错误)

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    
    int want[106];        //各学校招生人数
    
    struct Student
    {
      int GE,GI,sum,rank,ID;
      int prefer[6];
      bool R;          //代表该生录取情况
    }STU[40066];
    
    bool cmp(Student a,Student b)
    {
      if(a.sum!=b.sum)
        return a.sum>b.sum;
      else
        return a.GE>b.GE;
    }
    
    int main()
    {
      memset(STU,0,sizeof(STU));
      fill(want,want+106,-1);        //各学校招生人数初始设置-1
      int n,m,k;              //n名考生,m所学校,k个志愿
      scanf("%d%d%d",&n,&m,&k);
      for(int i=0 ; i<m ; ++i)      //输入各学校招生人数
        scanf("%d",&want[i]);
      for(int i=0 ; i<n ; ++i)
      {
        scanf("%d %d",&STU[i].GE, &STU[i].GI);    //填入分数
        STU[i].sum=STU[i].GE+STU[i].GI;        //填入总分
        STU[i].ID=i;                //填入编号
        for(int j=0 ; j<k ; ++j)
        {
          int tmp=-1;
          scanf("%d",&tmp);      //填入志愿
          STU[i].prefer[tmp]=1;
        }
      }
      sort(STU,STU+n,cmp);
      STU[0].rank=1;
      for(int i=1 ; i<n ; ++i)            //填入排序
      {
        if(STU[i].sum==STU[i-1].sum && STU[i].GE==STU[i-1].GE)
          STU[i].rank=STU[i-1].rank;
        else
          STU[i].rank=i+1;
      }
      //学校优先选择权法(不符合题意)
      for(int i=0 ; i<m ; ++i)            //输出各学校录取信息
      {
        int top=0;                  //用于输出并列排名的破格录取
        int kongge=0;                //控制空格的输出
        for(int j=0 ; j<n ; ++j)
        {
          if(STU[j].R==0 && STU[j].prefer[i]==1 && (want[i]>0 || want[i]==0 && STU[j].rank==top))  //该生未被录取,该生报考这个学校,该校还招人;或者学校招满,只招并列此名次的同学
          {
            if(kongge!=0)
              printf(" ");
            printf("%d",STU[j].ID);
            kongge=1;
            top=STU[j].rank;          //记录该考生的排名
            STU[j].R=1;              //标记考生已投档
            --want[i];              //招生需求人数-1
          }
        }
        printf("
    ");
      }
    
      return 0;
    }
  • 相关阅读:
    Hibernate 学习-3
    Hibernate反向工程使用心得
    MyEclipse中自动整合Spring3+Hibernate/JPA
    jsp页面不显示问题
    jstl获取当前系统时间的方法
    js实现12小时时钟
    从servlet跳到jsp页面,并用jstl 进行判断和显示方法
    jsp调用js文件时出现乱码
    常见异常总结
    js实现表单验证
  • 原文地址:https://www.cnblogs.com/Evence/p/4308810.html
Copyright © 2011-2022 走看看