70. Climbing Stairs

70. Climbing Stairs

My Submissions
Question
Total Accepted: 88315  Total Submissions: 246989  Difficulty: Easy

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?

Subscribe to see which companies asked this question

Hide Tags
  Dynamic Programming


分析:

比较典型的动态规划问题.

定义子问题:令vec[i]表示跳到第i步可行的不同方式数目

接着寻找当前子问题vec[i]与前面子问题的关系,

如果是用两步跳过来的(跳到第i步)则vec[i]=vec[i-2],因为这两步已经确定了,那么只有vec[i-2]中可能

如果是用一步跳过来的(跳到第i步)则vec[i]=vec[i-1],因为这一步已经确定了,那么只有vec[i-1]中可能

class Solution {
public:
    int climbStairs(int n) 
    {
        vector<int> vec(n+1,0);
        vec[1]=1;
        vec[2]=2;
        for(int i=3;i<=n;i++)
            vec[i]=vec[i-1]+vec[i-2];
        
        return vec[n];
    }
};


参考九度,跳台阶问题

题目1388:跳台阶

题目描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

输入:

输入可能包含多个测试样例,对于每个测试案例,

输入包括一个整数n(1<=n<=70)。

输出:

对应每个测试案例,

输出该青蛙跳上一个n级的台阶总共有多少种跳法。

样例输入:
5
样例输出:
8

#include "vector"
#include "string"
#include "algorithm"
#include <iostream>
#include "stack"
#include <cmath> 
 
using namespace std;
 
//当n=1时,ans=1,当n=2时,ans=2
//当n=3时,ans=3,当n=4时,ans=5
//当n=5时,ans=8
//令跳到第i个台阶时的方法数为f(i)
//当我们确定选择下一步跳2时,方法数就是f(i-1)(此时f(i-1)+2=f(i+1))
//当我们确定选择下一步跳1时,方法数就是f(i)
//显然两种选择都可以,所以f(i+1)=f(i)+f(i-1)
int main()
{
     int  n;
    while (cin >> n)
    {
        vector<long long> vec(n+1);
        vec[1] = 1;
        vec[2] = 2;
        for (int i = 3; i <= n; i++)
        {
            vec[i] = vec[i - 1] + vec[i-2];
        }
        cout << vec[n] << endl;
    }
    return 0;
}
/**************************************************************
    Problem: 1388
    User: EbowTang
    Language: C++
    Result: Accepted
    Time:10 ms
    Memory:1520 kb
****************************************************************/



注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!

原文地址:http://blog.csdn.net/ebowtang/article/details/50332803

原作者博客:http://blog.csdn.net/ebowtang

你可能感兴趣的:(LeetCode,数据结构,算法,动态规划,ACM)