『壹』 用c語言怎麼做猴子偷桃
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inti,n=1;
for(i=0;i<9;i++)
{
n=2*(n+1);//其實就是一個循環,找到規律後執行9次即可
}
printf("猴子最初有%d個桃子",n);
return0;
}
『貳』 請用C語言編寫一個程序,「猴子吃桃」問題
如果真是吃到了第10天,我想說這TMD還是猴子嗎?第一天就會撐死!
C代碼在線運行工具
#include<stdio.h>
intmain()
{
intday=10;
intsum=0;
inti=0;
sum=1;
for(i=day;i>=1;i--)//吃之後演算法
{
sum=(sum+1)*2;
}
printf("第%d天吃之後還剩1個,最初有%d個桃子,",day,sum);
printf("第1天吃了%d個桃子; ",sum/2+1);
sum=1;
for(i=day-1;i>=1;i--)//吃之前演算法
{
sum=(sum+1)*2;
}
printf("第%d天吃之前還剩1個,最初有%d個桃子,",day,sum);
printf("第1天吃了%d個桃子。 ",sum/2+1);
return0;
}
第 10 天吃之後還剩1個,最初有 3070 個桃子,第 1 天吃了 1536 個桃子;
第 10 天吃之前還剩1個,最初有 1534 個桃子,第 1 天吃了 768 個桃子。
『叄』 猴子上樓梯的c語言詳細原代碼及解析
20分……
只能給你思路了
用數組a[i]記錄猴子上到第i個階梯時最少代價,b[i]為所輸入的階梯上的正整數數據
用兩層循環,
第一層循環i是從1到n,對每層階梯進行掃描
第二層循環j是從1到k,如果a[i+j]<a[i]+b[i+j]即將a[i+j]更新為a[i]+b[i+j]
a[i]+b[i+j]的意思是在第i層階梯的最少代價加上第i+j層的那個數據,
如果小於在第i+j層的暫時最小代價(因為最小值還沒確定),
那麼就更新第i+j層的代價,使它變得更小
這樣一步步遞推,就能得到a[n]的最小代價
『肆』 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語言,猴子吃桃子代碼求注釋
哥們好,我來解釋解釋哈
這個程序是倒著分析的:首先說的是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]就是所謂的總數目啦,
懂了吧,朋友?還沒懂的話
就再繼續探討探討哈
歡迎