c语言猴子偷桃问题
Ⅰ 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语言怎么做猴子偷桃
#include <stdio.h>
#include <stdlib.h>
int gouzitigui(int n){
printf("xxxxxxxxxxxxx\n");
if(n==1){
return 1;
}else{
return (gouzitigui(n-1)+1)*2;
}
}
int main()
{
int i,n=1;
printf("猴子最初有%d个桃子",gouzitigui(10));
return 0;
}
从题目中可以得出后一天是前一天加1乘以2,
Ⅲ C语言猴子吃桃问题递归法
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
==============================================================
Ⅳ 猴子偷桃的问题 算法
5个猴子摘了一堆桃,第一个猴平均分5份,余出一个,拿走其中一份和多出的一个,第二个猴将剩下的4份平均分成5份,又余出一个.....第5个后又将剩下的4分平均分成5份,多出一个,求最开始至少有多少个桃?(用递归算法)
# include <iostream.h>
int i;
int fentao(int k)
{
if(i==4) return k;
else if(k%5!=1||k%4!=0)
return 0;
else
{
k=k/4*5;
i++;
return fentao(k);
}
}
void main()
{
for(int j=0;j<100000;j++)
{
i=0;
if(fentao(j)!=0)
{
cout<<fentao(j);
break;
}
}
}
看程序应该能明白的吧
实在不好讲