‘壹’ 用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]就是所谓的总数目啦,
懂了吧,朋友?还没懂的话
就再继续探讨探讨哈
欢迎