动态规划--台阶问题

来源:互联网 发布:装linux系统 编辑:程序博客网 时间:2024/05/20 21:22
int countWays(int n)   {  int hash[100001];//因为最大值为100000  hash[0] = 0;  hash[1] =1;  hash[2] =2;  for (int i = 3; i <=n; i++)  {  hash[i] =(hash[i - 1] + hash[i - 2])%1000000007;  }  return hash[n];  }


有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。为了防止溢出,请将结果Mod 1000000007

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。

思路:

如果想走到第i层台阶,只能从第i-1层台阶迈一步到第i层台阶,或从第i-2层台阶迈两步到第i层台阶。

所以走上第i层台阶的方法数为:f(i)=f(i-1)+f(i-2),i>2

 

 

原创粉丝点击