剑指Offer----扩展:上台阶(京东)

原创 2016年08月29日 11:20:26

问题描述:


有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。

测试样例:3
返回:2


分析:


这不就是典型的动态规划问题吗,同时也是斐波那契数列问题的另一种形式,首先f(1) = 1,f(2) = 1; f(n) = f(n-1)+f(n-2);因为上最后一个台阶可以有两种方式,要不然就从第n-2个台阶跳二级要不然就从第n-1个台阶跳一级。这里采用了自底向上的形式。

源代码:

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

int CalC(int n)
{
	if (n <= 0)
		return 0;
	int arr[110];
	arr[1] = 1;
	arr[2] = 1;

	for (int i = 3; i <= n; ++i)
	{
		arr[i] = (arr[i - 1] + arr[i - 2]) % 1000000007;
	}

	return arr[n];

}

int main()
{
	printf("%d\n", CalC(30));

	printf("%s %s\n", __DATE__, __TIME__);
	system("pause");
	return 0;
}

运行结果:
832040
Aug 29 2016 00:24:21
请按任意键继续. . .






版权声明:本文为博主原创文章,未经博主允许不得转载。

剑指Offer----扩展:年终奖(京东)

问题描述: 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他...

剑指Offer----扩展:空格问题(京东)

问题描述: 给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。 例如:" i am a little boy....

剑指offer系列之八:跳台阶问题

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。这种问题的思路一般是采用数学归纳法,当n=1时,只有一种跳法;当n=2时,青蛙可以一次跳2级,也可以一...

跳台阶解析【剑指Offer】

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。(题目链接:跳台阶) 解析,初学者可能会想到用递归的方法,f(n)= f(n - 1) + f(...

《剑指offer》—8、跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路: 1、如果你看到题目不知道从哪下手,采用笨方法首先尽量罗列出来,计算f(1) = 1...

《剑指Offer》递归和循环——跳台阶

题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路 首先我们考虑最简单的情况。如果只有1个台阶,那么显然只有一种跳法;如果是2级台阶,那么有...

剑指offer-8.跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路:斐波那契数列的变种,为什么是斐波那契数列的变种?链接:首先我们认为台阶数为N的时候的总数...

【剑指Offer】:变态跳台阶

一:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 二:解题思路  第n个台阶,可以直接跳到,可以由第一个,第二个,第3个,....

九度OJ1389剑指offer面试题9变形:变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 输入 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(...

剑指offer中的青蛙跳台阶问题

剑指offer ---#define _CRT_SECURE_NO_WARNINGS 1 //青蛙跳台阶,一次可以跳一个,或者一次跳两个,跳n个台阶,共有多少种跳法。。。。 #include #inc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剑指Offer----扩展:上台阶(京东)
举报原因:
原因补充:

(最多只允许输入30个字)