C语言程序设计——猴子分桃要求:动物园里的N只猴子编号1,2,3,….,N,N只猴子排好队,队首的猴子可以到筐子里取桃子.当筐里为空时管理员便放入筐中一些桃子,第K次放入K个桃子.队首猴子取桃

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 07:49:02

C语言程序设计——猴子分桃
要求:动物园里的N只猴子编号1,2,3,….,N,N只猴子排好队,队首的猴子可以到筐子里取桃子.当筐里为空时管理员便放入筐中一些桃子,第K次放入K个桃子.队首猴子取桃子的规则为:若猴子手中的桃子加上框中的桃子不足m个,就把筐中的桃子全部取走,并到队尾继续排队;如果满m个,猴子取足m个桃子,并且离队.筐里剩下的桃子由剩下的一位来取.
对于用户输入的任意N值,计算并输出N个猴子的离队序列.

#include
#include
#define N 10
#define M 20
struct monkey
{
int id;
int tao;
};
struct queue
{
struct monkey content[N];
struct monkey* head;
struct monkey* tail;
int length;
};
int queue_init(struct queue** q)
{
(*q) = (struct queue*)malloc(sizeof(struct queue));
(*q)->head = &(*q)->content[0];
(*q)->tail = &(*q)->content[0];
(*q)->length = 0;
return 0;
}
int queue_in(struct queue* q,struct monkey in)
{
if(q->length == 0)
{
*(q->tail) = in;
q->length++;
}
else
{
q->tail++;
*(q->tail) = in;
q->length++;
}
return 0;
}
int queue_out(struct queue* q, struct monkey* out)
{
int i = 0;
*(out) = *(q->head);
for(;i < q->length-1;i++)
q->content[i] = q->content[i+1];
q->tail--;
q->length--;
return 0;
}
//队首到队尾
int queue_a(struct queue* q)
{
struct monkey temp;
queue_out(q, &temp);
queue_in(q,temp);
return 0;
}
int main()
{
struct monkey data[N];
struct queue* q = NULL;
struct monkey temp;
int i;
int kuang = 0;
for(i=0;ilength);
printf("head %d\t tail %d\n",q->head->id,q->tail->id);
i = 0;
while(q->length != 0)
{
if(kuang == 0)
{
i++;
kuang += i;
}
//队首猴取桃
if(q->head->tao + kuang < M)
{
q->head->tao += kuang;
kuang = 0;
queue_a(q);
}
else
{
kuang -= M - q->head->tao;
q->head->tao += M - q->head->tao;
queue_out(q, &temp);
printf("%d\t%d\n",temp.id,temp.tao);
}
}
return 0;
}

C语言程序设计——猴子分桃要求:动物园里的N只猴子编号1,2,3,….,N,N只猴子排好队,队首的猴子可以到筐子里取桃子.当筐里为空时管理员便放入筐中一些桃子,第K次放入K个桃子.队首猴子取桃 动物园里的一只公猴子和一只母猴子是什么关系? c语言程序设计 猴子分桃算法C++/C语言 动物园有猴子37只,猩猩比猴子少19只,动物园里一共有多少只猩猩和猴子 动物园里有56只猴子,比鸵鸟多40%.动物园里鸵鸟有多少只? 这个动物园里有许多种猴子.的翻译 在动物园里看猴子用.watch还是see? 中山公园 现在动物园里还有没有猴子了? 动物园里有老虎四只,比猴子的只数少七分之六,动物园里的老虎比猴子少几只 用动物园写作文动物园里有猴子天鹅海狮熊猫 用动物园写作文动物园里有猴子天鹅海狮熊猫 动物园里的饲养员给三群猴子分花生.如果只分给第一群猴子,则每只猴子可分得12粒;如果只分给第二群猴子则每只猴子可分得15粒;如果只分给第三群猴子,则每只猴子可分得20粒.那么把花生 动物园里的饲养员给三群猴子分花生.如果只分给第一群猴子,则每只猴子可分得12粒;如果只分给第二群猴子,则每只猴子可分得15粒;如果只分给第三群猴子,则每只猴子可分得20粒.那么,把花 写动物园里猴子的作文,不超150字小猴子的作文哦, 动物园里猴子比猩猩多10只,猩猩的数量比猴子少8分之1,动物园里的猩猩与猴子各有多少只? 动物园里有猴子x只,大猴子是小猴子的3倍多4,小猴有多少只 动物园里猴子的只数是熊猫的6倍,猴子比熊猫多30只.求猴子和熊猫.