超级台阶(NYOJ76)

超级台阶

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 3
描述

有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?

注:规定从一级到一级有0种走法。

输入
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
输出
对于每个测试实例,请输出不同走法的数量。
样例输入
2
2
3
样例输出
1
2

1.从第一级台阶开始,走到第一,二,三级走法为0,1,2。

2.从第四级台阶开始,第m级走法数为第m-1级和第m-2级台阶走法数的和。因为,从第m-1级到第m级走一步,从第m-2级到第m级走2步,只有这两种可能。

3.递推可以解决这个为题,很巧妙。

#include 

int main()
{
	int m, n, i;
	int array[41];
	scanf("%d",&n);
	while(n --)
	{
		scanf("%d",&m);
		array[1] = 0;//走到第一,二,三级台阶走法数为0,1,2 
		array[2] = 1;
		array[3] = 2;
		for(i=4; i<=m; i++)
		{
			array[i] = array[i-1] + array[i-2];//递推过程 
		}
		printf("%d\n",array[m]);
	}
	return 0;
}


你可能感兴趣的:(递推题)