代码随想录算法训练营第三十四天| 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

发布时间 2023-07-21 09:25:54作者: 博二爷

 70. 爬楼梯 (进阶)

要求:可以一下爬1-2个台阶,问爬到N阶的时候有多少种方法

公式1: nums[n] = nums[n-1]+nums[n-2];

公式2: dp[n] +=dp[n-nums[i]];

代码:

 1 // 爬楼梯的问题:依次只能爬1 2,满足N时,它的排列有多少种
 2 // dp[n]:当爬够N阶台阶的时候一共有多少种方法
 3 // 
 4 // dp[j] += dp[j-nums[i]]
 5 //
 6 
 7 int climbStairs(int n) {
 8     if (n == 0) return 0;
 9     vector<int> nums = { 1,2 };
10     vector<int> dp(n + 1, 0);
11     dp[0] = 1;
12 
13     for (int j = 0; j <= n; j++)
14     {
15         for (int i = 0; i < nums.size(); i++)
16         {
17             if(j>=nums[i])
18                 dp[j] += dp[j - nums[i]];
19         }
20     }
21 
22     return dp[n];
23 }