當前位置:首頁 » 編程語言 » 五猴分桃c語言

五猴分桃c語言

發布時間: 2022-09-01 18:45:12

『壹』 猴子分桃問題,c語言,急~~~

答案是:至少剩8188,原來至少84371
/*猴子分桃改版*/
#include <stdio.h>

int main()
{
int previous (int current, int share, int remaining); /*定義分桃函數,current分完剩下數值,share份數,remaining被吃的余數,返回值為分前數目*/
int monkeyNum1=3, monkeyNum2=5; /*兩組猴子數*/
int peachNum, peachNumr; /*桃子的總數和最後剩下的數目*/
int i,j; /*中間變數*/
for (i=1;i<10000;i++)
{
peachNum=i;
for(j=1;j<=monkeyNum2;j++)
{
peachNum=previous(peachNum, monkeyNum2, 1);
if(peachNum==0)
break;
}
if(peachNum==0)
continue;
for(j=1;j<=monkeyNum1;j++)
{
peachNum=previous(peachNum, monkeyNum1, 2);
if(peachNum==0)
break;
}
if(peachNum==0)
continue;
else
break;
}
peachNumr=i;
printf("At last remaining: %d\nNumber of all the peaches: %d\n",peachNumr,peachNum);
return 0;
}

int previous (int current, int share, int remaining)
{
int previousNum;
previousNum=current*share/(share-1)+remaining;
if(previousNum%share!=remaining)
return 0;
return previousNum;
}

『貳』 c語言:猴子分桃

呵呵,最近怎麼一直看到猴子分桃。答案是620~

#include <iostream>

using namespace std;

float superMonkey(int n,int n2)
/**參數說明:n是幾只猴子。n2是最後最遲醒來的猴子擁有的桃數,比如在你的題目最遲醒來的猴子最少最少都要有6個桃子,才能分成五份,再吃掉剩下的一個。**/
{
if (n==1) return n2;
float x;
x = (5 * (superMonkey(n-1,n2)+1))/4;
return x;

}

int main(int argc, char *argv[])
{
for(int i=6; i<=300;i++)
{
cout<<superMonkey(5,i)<<"\n";//5隻猴子,為了找出原先最少必須有幾個,用循環求答案直到找到一個整數。
}
cin.get();
}

/**接下來出現的一堆數字就是一開始的桃數。不能有小數點的,所以要找的是第一個出現的整數。我放300次循環因為我稍微試過了,620是原先必須有的最少桃數(第一個出現的整數就是620啊)。你可以稍微改改,放個檢測整數的函數,就不用看到一堆數字了。還可以該題目成10隻猴子什麼的。**/

『叄』 c語言----5隻猴子分桃

LZ你不妨倒著來,題目要求最少,那就假設最後一個猴子(第五隻)扔了一個後就沒了,那麼第四隻猴子扔了後應該有六個,同理,第三隻扔了後有(6+1)*5=35個,所以就有了如下的程序:

#include<stdio.h>

main()

{

inti,s=0;

for(i=1;i<=5;i++)

{

s=(s+1)*5;

}

printf("%d ",s);

}

『肆』 C語言程序設計——猴子分桃

#include <stdlib.h>
#include<stdio.h>
#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;i<N;i++)
{
data[i].id = i+1;
data[i].tao = 0;
}
queue_init(&q);
for(i=0;i<N;i++)
queue_in(q, data[i]);

for(i=0;i<N;i++)
{
printf("%d\t%d\n",q->content[i].id,q->content[i].tao);
}
printf("leng=%d\n",q->length);
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語言:五猴分桃問題

4/5是整型運算,會導致結果為0
於是後續a一直是0
無法退出循環

『陸』 c語言,解題思路,最好附程序注釋……五個猴子分桃,答案是3121的那個

#include<stdio.h>

//判斷能否被合理的分配
intdivide(intn,intm)
{
if(n/5==0||n%5!=1)
{//不足5個或不能分5份多1個,分配失敗
return0;
}
if(m==1)
{//分到最後一個猴子,說明能分配成功
return1;
}
returndivide(n-n/5-1,m-1);
}

main()
{
intn;//桃子數量

for(n=1;;n++)
{
if(divide(n,5))
{//判斷能否被合理的分配
printf("%d ",n);
break;
}
}
}

『柒』 c語言:五猴分桃問題,我自己寫了個程序,不知道錯在哪求指點,謝謝

你的 for(n=10000;n>1;n--)
n=10000。已經賦值。而五猴分桃中n是一不確定值! 桃子不一定小於10000個

『捌』 C語言 5猴分桃求思路

假如原來有a個桃子第1隻猴子拿完後剩(a-1)4/5
[(a-1)4/5-1]4/5
{[(a-1)4/5-1]4/5-1}4/5
【{ [(a-1)4/5-1]4/5-1}4/5-1】4/5
《【{ [(a-1)4/5-1]4/5-1}4/5-1】4/5-1》4/5
第五隻拿玩後至少要大於等於4
解不等式《【{ [(a-1)4/5-1]4/5-1}4/5-1】4/5-1》4/5>=4

求出a循環結束

『玖』 用C語言編一程序 猴子分桃的問題

摘的數量最少是什麼樣的情況?我想應該滿足:
1,第5隻猴子有桃子吃;
2,第5隻猴子在醒後吃桃子之前把桃子平均分成了5份,而且還多了一個桃子(隱含意義是第5隻猴子吃了2個桃子,剩下4個桃子,這樣才滿足摘的數量最少);
那麼我們就知道了,最後一個猴子(將猴子數量擴展為未知,猴子數為n)醒後還有n+1個桃子;
第n-1個猴子醒後還有n*(n+1)+1個桃子;
第n-2個猴子醒後還有n*(n*(n+1)+1)+1;
以此類推,可由遞歸算出桃子總數

『拾』 C語言,猴子吃桃子代碼求注釋

哥們好,我來解釋解釋哈
這個程序是倒著分析的:首先說的是s[n]為第n只猴子走後,留給其他每個猴子的桃子的數目。(當然猴子都不知道前面的猴子已經拿過了),所以剩餘桃子是s[5]*4,就是第五隻猴子給其他每隻猴子留下的桃子數目乘以4。
倒著推,第五隻猴子先多吃了一個,再平分5份,並吃掉了自己的一部分,那麼留下的s[5]其實肯定是4的倍數【這段代碼其實可以優化一下】則留下的s[5]*5並加上1,就是第4個猴子留下的桃子總數,然後看下是否是4的倍數,因為這是第四個猴子留下的准備給其他4個猴子的桃子,肯定是4的倍數啦,如果不是就說明錯誤咯,,然後這個數再除以4,再乘以5,再加上1,就是第三隻猴子留下的桃子總數,那肯定也是4的倍數啦。
以此類推,就能推到第一隻猴子時的桃子數什麼的,總數什麼的,都出來啦
如果上面意思弄懂了,現在就說程序本身,先假設s[5]為1,然後看s[5]*5+1【就是第四隻猴子留下的桃子數目】是否能被4整除,如果不能,就直接跳出循環,假設s[5]為2,再看s[5]*5+1能否被4整除,如果能被整除,就得到s[4]的值,【就是你 「s[4]
/=
4;
//想知道這代碼有什麼用」的這段代碼的意思】再乘以5,然後再加上1,就是第三隻猴子留下的桃子數目,再看這個能否被4整除,如果不能,就直接跳出循環,再重新來啦
一直到s[1],最後s[0]就是所謂的總數目啦,
懂了吧,朋友?還沒懂的話
就再繼續探討探討哈
歡迎

熱點內容
中國銀行查詢密碼是什麼 發布:2025-01-16 02:33:20 瀏覽:791
堅果pro錄音文件夾 發布:2025-01-16 02:31:46 瀏覽:938
支付寶的登錄密碼忘記了如何改 發布:2025-01-16 02:30:30 瀏覽:221
解壓作業泥 發布:2025-01-16 02:28:02 瀏覽:806
我的世界rpg伺服器空島 發布:2025-01-16 02:26:49 瀏覽:90
ps腳本函數 發布:2025-01-16 02:15:28 瀏覽:480
android顯示行數據 發布:2025-01-16 02:07:40 瀏覽:963
壓縮皇冠 發布:2025-01-16 01:51:27 瀏覽:274
全鍵盤編程鍵盤 發布:2025-01-16 01:38:59 瀏覽:422
尾貨棉服直播間腳本 發布:2025-01-16 01:21:45 瀏覽:228