/* 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90)。 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数。 样例输入: 4 样例输出: 5 基本思路: 走到第n阶时,可能是从第n-1阶走一步到的,也可能是从n-2阶走两阶到的,设F(n)为走到n阶的种数,则F(n)=F(n-1)+F(n-2). 这是一个动态规划的问题,其实就是一个斐波那契数列。 1 2 3 5 8 13 ...... */ # include <stdio.h> int main(void) { int n; int step[50]; while(scanf("%d", &n) != EOF) { getchar(); //吸收回车符。 if(n < 0) break; int i; step[1] = 1; step[2] = 2; for(i = 3; i <= n; i++) { step[i] = step[i-1] + step[i-2]; } printf("%d\n",step[n]); } return 0; }
时间: 2024-10-09 22:47:59