第39级台阶

39级台阶的行走策略
 
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 
站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢? 
请你利用计算机的优势,帮助小明寻找答案。   
解答: 
/有左右脚的限制,即第一步必须左脚,然后左右交替,最后一步必须是右脚。即必须走偶数步。 

#include<iostream.h> //有左右脚的限制。

 const int N=39;

 int f(int m,int n)

 {  if(m==0||n==0) 

return 1;  

  return(f(m-1,n)+f(m,n-1));//递归的关键在此,大规模逐渐转化为小规模。

 }  

int main() 

{  int x=N/2,y;  //x表示走两步的次数,y表示走一步的次数。

  int i,sum=0;

    for(i=x;x>=0;x-=2)  //为了保持偶数步,必须x每次递减2,而不是1;(x要x>=0,不能x>0),x=0是针对偶数台阶。 

 {   y=N-2*x; 

  sum+=f(x,y);  //求组合数;

  } 

  cout<<"共有 "<<sum<<"种走法。"<<endl;  return 0;

 } 

//51167078种走法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值