Problem:
You is climbing a stair case. It takes n steps to reach the top.
Each time you can either climb 1 or 2 steps. In what many distinct ways can you climb to the top?
Hide TagsDynamic ProgrammingTest instructions: Climb up an n-step staircase, crawl one or two orders at a time, and find out how many different ways to get there
Thinking:
(1) To tell the truth, see the first reaction to the use of DFS, but the time complexity of the deep search for the number of linear expression of the solution, will definitely time-out
(2) The hint uses the DP, the time complexity is O (n), this problem's state transfer equation is very simple: a[i]=a[i-1]+a[i-2]; the only problem is initialization: a[0]=1,a[1]=2
Submitting a trial correction is.
Code
Class Solution {public: int climbstairs (int n) { vector<int> a (n,0); A[0]=1; a[1]=2; if (n<3) return a[n-1]; for (int i=2;i<n;i++) a[i]=a[i-1]+a[i-2]; return a[n-1];} ;
Leetcode | | 70, Climbing stairs