递推递归练习 中的N题

来源:互联网 发布:血腥玛丽鸡尾酒 知乎 编辑:程序博客网 时间:2024/05/23 15:06

题意说的很清楚,就是满足所给的条件,给定柱子和荷叶求可以跳到河对面的最大青蛙的数量。

思路:可以从0,0开始分析,只有一只青蛙可以跳过,就是直接跳到河对面去。

若0,1则最多可以跳两只青蛙,即一只从荷叶上跳过去,另一只直接跳到河对面去。

以此类推就不难推出递推公式,即柱子为0时最多跳过的青蛙数为荷叶数加一。

同理,再分析1,0的情况,最多跳过2只青蛙,而1,1时则为4只。因此递推公式为  num(a,b)=2*num(a-1,b);

代码如下:

 #include<iostream>
#include<cmath>
using namespace std;
int num(int a,int b)
{int i,j;
if (a==0) return b+1;
else return 2*num(a-1,b);
}
int main()
{
    int  e=1,i,j,n,m;
      while (cin>>m>>n) 
    { 
      cout<<num(m,n)<<endl;
    }
    }
此类问题题干比较长,需要读懂题意并加以分析,一旦求出递推公式,编代码便是很容易的事情。关键是读懂题意。

0 0
原创粉丝点击