Leetcode: Climbing Stairs

1282 단어 LeetCode
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?
간단한 DP라고 할 수 있는데 생각지도 못하면 생각이 없어진다.가장 게으른 방법은 돌아가는 것이지만 시간이 지나지 않는다.
class Solution {
public:
    int climbStairs(int n) {
        if (n <= 2) {
            return n;
        }
        
        return (climbStairs(n-1) + climbStairs(n-2));
    }
};
교체하면 돼요. 앞에서 계산한 결과를 이용하세요.
class Solution {
public:
    int climbStairs(int n) {
        if (n <= 2) {
            return n;
        }
        
        int sn, sn2 = 1, sn1 = 2;
        for (int i = 3; i <= n; ++i) {
            sn = sn2 + sn1;
            sn2 = sn1;
            sn1 = sn;
        }
        
        return sn;
    }
};

====================두 번째==============================
class Solution {
public:
    int climbStairs(int n) {
        if (n <= 2) {
            return n;
        }
        
        int n1 = 1;
        int n2 = 2;
        int ways = 0;
        for (int i = 3; i <= n; ++i) {
            ways = n1 + n2;
            n1 = n2;
            n2 = ways;
        }
        
        return ways;
    }
};

좋은 웹페이지 즐겨찾기