机试算法讲解:第47题 递推之N阶楼梯如何上楼

来源:互联网 发布:淘宝助理上传宝贝 编辑:程序博客网 时间:2024/06/01 15:01
/*递推求解:确定几个规模较小的答案,考虑如何由规模较小的问题的答案推出后面的答案问题:N阶楼梯上楼问题:一次可以走两阶或者一阶,问有多少种上楼方式(要求采用非递归)输入:一个整数N(1<=N<90)输出:输出阶数为N时的上楼方式的个数输入:4输出:5思路:当n>2时,最后一步的行走方式可能:1)走到N-1阶台阶,走一步形成,上楼方式与原问题中到达n-1阶方式数量相同为F[n-1]。2)走到N-2阶台阶,走两步形成,上楼方式与原问题中到达n-2阶台阶的方式数量相同,为F[n-2]关键:1 递推求解在于确定数列的递推关系F[n]={n,n=1或2     {F[n-1]+F[n-2],n>22 采用递归时从现在向前面追溯,不用递归,从现在向后面预处理.先计算出F[n] = F[n-1] + F[n-2]*/#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 91//关键,不能使用递归,则我们需要预处理int main(int argc,char* argv[]){_int64 F[N];F[1] = 1;F[2] = 2;for(int i = 3 ; i <= 90 ; i++){F[i] = F[i-1] + F[i-2];}int n;while(EOF!=scanf("%d",&n)){printf("%ld\n",F[n]);}system("pause");getchar();return 0;}

0 0
原创粉丝点击