Leetcode | 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?
Resolution:
This question isDynamic PlanningProblem, the optimal solution can be composed of the optimal solution of sub-problems, with repeated sub-problems.
From the question, we can know all the methods f (n) that require the arrival of the nth Step, and each time they can reach 1 ~ Two steps,
-Step 1 from n-1 to n
-Step 2 from The N-2 to the n Level
Therefore F (n) = f (n? 1) + f (n? 2) Fabna
The difficulty lies in thinking of recursion. Pay attention to recursive issues from the back to the front.
Class Solution {public: // f (n) = f (n-1) + f (n-2) int climbStairs (int n) {int prev = 0; int cur = 1; for (int I = 1; I <= n; I ++) {int temp = cur; cur + = prev; prev = temp;} return cur ;}};