STL_A1056 Mice and Rice (25 分)

Posted 2o2o

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL_A1056 Mice and Rice (25 分)相关的知识,希望对你有一定的参考价值。

https://pintia.cn/problem-sets/994805342720868352/problems/994805419468242944

/*
*queue的使用,先进先出
*变量定义要有意义
*制定晋级规则以及排名
*/
#include<iostream>
using namespace std;
#include<cstdio>
#include<queue>
const int MAXN=1010;

struct mouse 
    int weight;
    int ranks;
mouse[MAXN];

int main() 
      int number,grouper,order;
      scanf("%d%d",&number,&grouper);
      for(int i=0;i<number;i++) 
        scanf("%d",&mouse[i].weight);
      
      queue<int> queues;
      for(int i=0;i<number;i++) 
        scanf("%d",&order);
        queues.push(order);
      
      int temp=number,group;
      while(queues.size() != 1) 
        if(temp%grouper==0) group=temp/grouper;
        else group=temp/grouper+1;
        for(int i=0;i<group;i++) 
            int maxmouse=queues.front();
            for(int j=0;j<grouper;j++) 
                //最后一组老鼠不足grouper时退出循环
                if(i*grouper+j>=temp) break;
                int fronts=queues.front();
                if(mouse[fronts].weight > mouse[maxmouse].weight) 
                    maxmouse=fronts;
                
                mouse[fronts].ranks=group+1; //该轮老鼠排名为group+1
                queues.pop();
            
            queues.push(maxmouse); //把胜利的老鼠晋级
        
        temp=group; //group只老鼠进入下一轮
      
      //当队列里只剩1只老鼠时,令其排名为1
      mouse[queues.front()].ranks=1;
      for(int i=0;i<number;i++) 
        printf("%d",mouse[i].ranks);
        if(i<number-1) printf(" ");
      
    return 0;

以上是关于STL_A1056 Mice and Rice (25 分)的主要内容,如果未能解决你的问题,请参考以下文章

1056 Mice and Rice

PAT (Advanced Level) 1056. Mice and Rice (25)

1056 Mice and Rice (25 分)难度: 一般 / 知识点: 模拟

A1056Mice and Rice (25分)

PAT甲级1056 Mice and Rice (25 分)

数据结构专题——队列的应用 A1056.Mice and Rice ( 25)