程序算法问题:高手帮忙写个算法,不是代码,是算法哦!(是数据结构类的算法描述而非代码)

动物园里的n只猴子编号为1,2,…,n,依次排成一队等待饲养员按规则分桃。动物园的分桃规则是每只猴子可分得m个桃子,但必须排队领取。饲养员循环地每次取出1个,2个,…,k... 动物园里的n 只猴子编号为1,2,…,n,依次排成一队等待饲养员按规则分桃。动物园的分桃规则是每只猴子可分得m个桃子,但必须排队领取。饲养员循环地每次取出1 个,2 个,…,k个桃放入筐中,由排在队首的猴子领取。取到筐中的桃子数为k 后,又重新从 1 开始。当筐中桃子数加上队首猴子已取得的桃子数不超过m 时,队首的猴子可以全部取出 筐中桃子。取得桃子总数不足m个的猴子,继续到队尾排队等候。当筐中桃子数加上队首猴 子已取得的桃子数超过m 时,队首的猴子只能取满m个,然后离开队列,筐中剩余的桃子由 下一只猴子取用。上述分桃过程一直进行到每只猴子都分到m个桃子。设计一个算法求出猴子出列顺序(完成整个分配过程后的猴子的顺序)。
2)基本要求
(1)利用单循环链表作为存储结构模拟此过程;
(2)键盘输入猴子数目、桃子数目;
(3)按照出列顺序输出猴子编号。
设计一个算法(是数据结构类的算法描述而非代码)
展开
 我来答
百度网友c288dcd
2013-04-10 · TA获得超过115个赞
知道答主
回答量:57
采纳率:0%
帮助的人:18.8万
展开全部
既然都提示用链表了,算法也就出来了。
先定义链表,包括猴子当前有的桃子数x,猴子编号y,以及指向下一个的指针。人每次取出的桃子数为j。循环开始,
{ 上来先判断,x+j>m?(判断1)
是,链表指向下一个,
否,x=x+m,
然后判断x=m?(判断2)
是,输出猴子y.y
否,链表指向下一个
j++,判断j是否到k,是,j=1}

这样的话,已经出列的猴子,在下一轮的时候,在判断(1)就会指向下一个,即不给已经有m个桃子的猴子桃子(文字有点绕。。)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式