问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言数据结构之猴子分桃问题。

发布网友 发布时间:2022-05-16 20:44

我来回答

2个回答

热心网友 时间:2024-03-01 22:39

由文件input.txt 给出输入数据。第1 行中有3 个正整数n,k 和m,分别表示有n 只猴
子,每次最多取k个桃到筐中,每只猴子最终都分到m个桃子。
«结果输出:
将分桃过程中每只猴子离开队列的次序依次输出到文件output.txt。
输入文件示例 输出文件示例
input.txt output.txt
5 3 4 1 3 5 2
代码

#include"stdio.h"
#include"malloc.h"

void main()
{
int n,k,m;
int i,j;
int sub=0,p=0,flag=0;
int *queue;
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
scanf("%d %d %d",&n,&k,&m);
queue=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
queue[i]=0;
/*sub是用来存放多余的桃子。flag是用来控制循环用的。*/
while(flag<n)
{
for(j=0;j<n;j++)
{
if(queue[j]>=m) /*这只猴子已经领满m个桃子。*/
continue;
else if((queue[j]+p%k+1<m)&&(sub==0))
/*这只猴子还要继续领取他的桃子。*/
{
queue[j]=queue[j]+p%k+1;
p++;
}
else if((sub==0)&&(queue[j]+p%k+1>=m))
/*这只猴子刚领满m个桃子。*/
{
sub=queue[j]+(p%k)+1-m;
queue[j]=m;
p++;
flag++;
printf("%d ",j+1);
}
else if((sub+queue[j]<m)&&(sub!=0))
/*这只猴子还要继续领取他的桃子。*/
{
queue[j]=queue[j]+sub;
sub=0;
}
else if((queue[j]+sub>=m)&&(sub!=0))
/*这只猴子刚领满m个桃子。*/
{
sub=sub+queue[j]-m;
queue[j]=m;
flag++;
printf("%d ",j+1);
}
}
}
}

热心网友 时间:2024-03-01 22:40

#include<iostream>
#include<queue>
using namespace std;
class monkey
{
public:
int id;
int peach;
monkey(int imky)
{
id=imky;
peach=0;
}
monkey(const monkey &mkycopy)
{
id=mkycopy.id;
peach=mkycopy.peach;
}
};
int main()
{
int n,m,k;
cout<<"monkey number:n=";
cin>>n;
cout<<"k=";
cin>>k;
cout<<"m=";
cin>>m;
int ik=1;
bool mkypop=false;
int peachsy=0;
queue<monkey>mky;
for(int i=1;i<=n;++i);
{
monkey*mkynew=new monkey(i);
mky.push(*mkynew);
}
while(ik)
{
monkey mkytemp=mky.front();
if(mkypop==false)
{
mkytemp.peach+=ik;
ik++;
if(ik==k+1)
ik=1;
}
else
mkytemp.peach+=peachsy;
if(mkytemp.peach<m)
{
mkypop=false;
mky.pop();
mky.push(mkytemp);
}
else
{
cout<<mky.front().id;
peachsy=mkytemp.peach-m;
if(peachsy!=0)
mkypop=true;
mkytemp.peach=m;
mky.pop();
// delete &mkytemp;
}
if(mky.empty())
break;
}
cout<<endl;
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么时候功率最大 最小 家电多少功率算高功率 大功率用电器在开启瞬间,需要比正常使用功率大很多的启动电流,这是为什 ... 大功率电器设备为什么不能一下开到最大 有一个节能灯突然坏了,是哪个件坏了? 我不知道是节能灯坏了,还是开关面板坏了,按下开关面板时,节能灯有时... 为什么节能灯老是烧坏 湖州南太湖新区包括龙之梦吗 南太湖新区有哪些地方 南太湖是哪里 哪里有公卫助理医师的试题? 我的守宫不吃饭怎么办。买回来才一个月 就吃过两只。感觉已经瘦了。偶尔会有要吃的样子。逮不到食物就放 c语言 猴子分桃 openjudge 守宫到家没有好好的静养怎么办? 猴子分桃问题,c语言,急~~~ C语言编程题,关于猴子分桃问题 韩国电影母亲为什么是R21的??? 关于5猴分桃问题 r21级别的影视作品是什么内容的? 猴子偷桃的问题 算法 手机无基带与射频有关系吗 谁有[暗战2 DVD国语中字][刘德华 *云经典]种子下载,感谢哈 求诺基亚手机射频处理器AHNEUS204A的介绍 有没有新房是现房的呢? 是新房,现房吗 买新房现房什么时候能拿到房产证 买新房现房注意事项 广东这边,家里贴墙布大概能用多少年 家花为什么没有野花香 墙布能保持多久? 充电线有绿色液体 豹纹守宫拒食怎么破?前几个月还吃的好好的 现在拒食了 对大麦虫毫无兴趣了 金童玉女的影片分级 c语言中猴子分桃算法的设计思路? 小豹纹守宫到家两天了不吃饭,有那位神人帮帮我。谢谢 C编程:猴子分桃问题 守宫苗子到家一直拒食,汁液会*也不吃,绿色粪便。今天刚脱皮,卖家那开过食刚来活跃近日多在睡觉不动 《C程序设计》课程期末大作业:五猴分桃 请问我的肥尾守宫这段时间不吃东西是怎么回事啊!以前不会这样的?我养了三个多月了?求解 谢谢 蛙眼守宫出现拒食,怎么办 c语言---5只猴子分桃 怎样才能烧好红烧鲫鱼 急求&quot;现代主义雕塑课件&quot;PPT格式 波点长裙搭配拖鞋的造型好看吗? 法国女演员脱衣抗议防疫政策,为什么会这样? 汽轮机和燃气轮机工作原理上有什么区别,最高能说的详细些 19世纪法国演员哥格兰提出的“两个自我”的理论是什么内容? 理论上汽轮机凝汽器真空最高可以达到多少 请从审美特征等方面分析:为什么雕塑作品《米洛斯的阿芙洛蒂特》即《断臂的维纳斯》没有双臂却被人称颂? 工厂返费的结算问题?