leetcode_70题——Climbing Stairs(简单DP题)

Climbing Stairs

Total Accepted: 54579 Total Submissions: 158996My Submissions

Question Solution

You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

Hide Tags

Dynamic Programming

Have you met this question in a real interview?

Yes

No

Discuss

#include<iostream>
#include<vector>
using namespace std;
int climbStairs(int n) {
	if(n==0||n==1)
		return 1;
	int *ptr=new int[n+1];
	for(int i=0;i<n+1;i++)
		ptr[i]=0;
	ptr[n]=1;
	ptr[n-1]=1;
	for(int i=n-2;i>=0;i--)
		ptr[i]=ptr[i+1]+ptr[i+2];
	int last=ptr[0];
	delete []ptr;
	return last;
}
int main()
{
	cout<<climbStairs(3)<<endl;
}

  

时间: 2024-10-06 22:21:29

leetcode_70题——Climbing Stairs(简单DP题)的相关文章

2014 HDU多校弟九场I题 不会DP也能水出来的简单DP题

听了ZWK大大的思路,就立马1A了 思路是这样的: 算最小GPA的时候,首先每个科目分配到69分(不足的话直接输出GPA 2),然后FOR循环下来使REMAIN POINT减少,每个科目的上限加到100即可 算最大GPA的时候,首先每个科目分配到60分,然后FOR循环下来使REMAIN POINT减少,每个科目的上限加到85即可,如果还有REMAIN POINT,就FOR循环下来加到100上限即可 不会DP 阿 QAQ 过段时间得好好看DP了  =  = 于是默默的把这题标记为<水题集> //

hdu 4502简单dp题

dp[i] 表示第i天能赚得的最大工资 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; struct node { int star,end,cost; }A[1100]; int max(int a,int b) { return a>b?a:b; } int cmp(node a,node b) { re

[刷题]Climbing Stairs

You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 思路: 1.当成数学题来思考,先确定最终结果由多少个1和多少个2来组成,然后把每种组成的排列组合累加起来. 但是这样是很容易溢出的,13的阶乘就会使int溢出. 2.递

70. Climbing Stairs (Array; DP)

You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? class Solution { public: int climbStairs(int n) { int result[n+1]; result[0] = 1; re

70:Climbing Stairs【DP】

题目链接:click~ /*题意:n阶的台阶,每次只能上一步或两步,共有多少种方法 */ /** *思路:简单递推,d[i] = d[i-1] + d[i-2] * 两种方法,一种空间复杂度O(1),另一种O(n) */ //O(1) class Solution { public: int climbStairs(int n) { if(n <= 2) return n; int d1 = 1, d2 = 2, d3; for(int i = 3; i <= n; i ++) { d3 =

SDUT2857:艺术联合会(简单dp)

链接: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2857 题目解析: 这是去年校赛的题目,当时没做出来,现在才补,真水,这题就是一个简单dp. 看第k个人画第m幅画的时候,要考虑两个时间,1.第k-1个人画完第m幅画的时间,2.第k个人画完第m-1幅画的时间. 这两个时间的最大者+t[m][k]就是第k个人画完第m幅画的时间. 代码如下: #include <iostream> #in

计蒜客-跳跃游戏二 (简单dp)

题目链接:https://nanti.jisuanke.com/t/20                                                            跳跃游戏二 给定一个非负整数数组,假定你的初始位置为数组第一个下标.数组中的每个元素代表你在那个位置能够跳跃的最大长度.你的目标是到达最后一个下标,并且使用最少的跳跃次数. 例如: A = [2,3,1,1,4],到达最后一个下标的最少跳跃次数为 2.(先跳跃 1 步,从下标 0 到 1,然后跳跃 3 步,

leetcode 刷题之路 92 Climbing Stairs

You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少总跳法. 分析: 一次最多只能跳两级,那么对于第n级(n>=2)台阶,显然只能从第n-1级跳一级到达或

从一道简单的dp题中学到的...

今天想学点动态规划的知识,于是就看了杭电的课件,数塔问题啊,LCS啊都是比较经典的动规了,然后随便看了看就开始做课后练习题... HDOJ 1421 搬寝室 http://acm.hdu.edu.cn/showproblem.php?pid=1421 题目大意:从n(n <= 2000)个数中选出k对数(即2*k个),使它们的差的平方和最小. 例如:从8,1,10,9,9中选出2对数,要使差的平方和最小,则应该选8和9.9和10,这样最小,结果为2 因为知道是dp的题,先建个dp[][]数组,然