7-1 猴子分桃问题

动物园里有n只猴子,依次排成一队等待饲养员按规则分桃。动物园的分桃规则是每只猴子可以分得m个桃子,但是必须排队领取。饲养员循环地每次取出1个,2个,…,k个桃放入筐中,由排在队首的猴子领取,当放入到筐中的桃子数为k后,又重新从1开始放,只有筐中没有桃子了,饲养员才会往里面放。当筐中桃子数加上队首猴子已经取得的桃子数不超过m时,队首的猴子可以全部取出筐中的桃子,取得桃子总数不足m个的猴子,继续到队尾排队等候。当筐中桃子数队首猴子已取得的桃子数超过m时,队首的猴子只能取满m个,然后离开队列,筐中剩余的桃子由下一只猴子取用。上述分桃过程一直进行到每只猴子都分到m个桃子。编程实现输出猴子离开队列的次序。

输入格式:

5 3 40

输出样例:

1 3 5 2 4 

Gitee代码位置:

https://gitee.com/zhang-siyuan-211803139/data-structure/tree/master/栈和队列实验题目集4/猴子分桃问题

思路:

利用队列先进先出的特点,每次猴子拿到桃子就出队,然后在入队尾,直至队列为空时结束。注意:每次拿到的桃子数,是递增的,在满K之后需要将其设置为1,重新循环。

posted @ 2022-04-21 17:54  张思源  阅读(288)  评论(0编辑  收藏  举报