猴子吃桃--------两个猴子吃桃问题解决的详细描述
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猴子吃桃--------两个猴子吃桃问题解决的详细描述相关的知识,希望对你有一定的参考价值。
(1)猴子吃桃问题1。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃一个。
以后每天早上都吃了前一天剩下的一半另加一个。
到第10天早上再想吃时,就只剩一个桃子了。
求第一天摘了多少桃子。
/* 猴子吃桃问题1。 问题描述:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。 以后每天早上都吃了前一天剩下的一半另加一个。 到第10天早上再想吃时,就只剩一个桃子了。 求第一天摘了多少桃子。 分析思路:使用倒推法 y表示当天的桃子数,x表示前一天的桃子数, 当天的桃子数与前一天桃子数的关系如下:每天早上都吃了前一天剩下的一半另加一个 当天的桃子数y,总等于前一天的桃子数x减去前一天桃子数的一半(x/2),再减去1 即 y=x-x/2-1 推导出x=2*(y+1) 即前一天的桃子数与当天桃子数的关系 因为知道第10天的桃子数为1 所以我们可以从第10天开始,依次计算出第9天,在计算出第8天,依次类推,可计算出第1天的桃子数 因为当天和前一天有相同的递推公式,因此可以用循环来处理 算法:day表示第几天,y表示当天的桃子数,x表示前一天的桃子数 用循环从第10天(day=10,y=1)往前递推到第二天(day=2) 因为,当day=2时,此时的y为第2天的桃子数,此时的x为第一天的桃子数, 要注意:循环体中第一句,为递推公式, 循环体中第二句,为了下一次的递推,将当天的桃子数设为前一天的桃子数, 循环体中第二句保证在递推过程中y的不断变化,很关键 */ #include <iostream> using namespace std; int main( ) { int day,x,y; //day表示第几天,y表示当天的桃子数,x表示前一天的桃子数 //用循环从第10天(day=10)往前递推到第二天(day=2) //因为,当day=2时,此时的y为第2天的桃子数,此时的x为第一天的桃子数 for(day=10,y=1;day>1;day--) {x=2*(y+1); //前一天和当天桃子数的递推公式 y=x; //为了下一次的递推,将当天的桃子数设为前一天的桃子数,很关键 } cout<<"第"<<day<<"天的桃子数为:"<<x<<endl; //输出第2天的前一天的桃子数,即第一天的桃子数 return 0; }
以上是关于猴子吃桃--------两个猴子吃桃问题解决的详细描述的主要内容,如果未能解决你的问题,请参考以下文章