码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode第70题-Climbing Stairsd

时间:2015-04-21 22:49:05      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

  题目的意思是有n个台阶,每次只能上1或2个台阶,求出总共有几种上台阶的方法。

分析:因为每次都只能+1或+2,最后的每一个n就是由1或2的组合组成。但是换一种思路, 我们对比一些斐波那契数列,1、2、3、5、8、、、、,即f(n)=f(n-1)+f(n-2)。如果第一步走了1个台阶,剩下的组合是f(n-1),如果第一步走2个台阶,则剩下的组合f(n-2),从而得到递推式f(n)=f(n-1)+f(n-2),所以,这个爬楼梯就是一个递归的斐波那契数列问题。 

剩下的问题就是如何求出斐波那契数列的问题了,一开始我使用了递归,结果超时,只能用一个数组模拟数列了。整个实现的代码如下:

#include<stdio.h>
#include<stdlib.h>

int climbStairs(int n)
{
	int a[1000];
	a[1]=1,a[2]=2;
	for(int i=3;i<1000;i++)
		a[i]=a[i-1]+a[i-2];
	return a[n];
}

int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		int len=climbStairs(n);
		printf("%d\n",len);
	}
	return 0;
}


leetcode第70题-Climbing Stairsd

标签:

原文地址:http://blog.csdn.net/zyh920521/article/details/45174583

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!