algorithm
秋水 Lv4

动态规划

动态规划是一种 从底到顶 的方法 无需使用低柜。

/* 爬楼梯: 动态规划*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package DP;

/* 爬楼梯文同*/
public class example1 {
public static int climbingStairsDp(int n){
if (n == 1 || n== 2){
return n;
}
//初始化DP表,用于存储子问题的解
int[] dp = new int[n+1];
//初始化状态,没有最小子问题的解
dp[1] =1 ;
dp[2] =2 ;
// 从较小问题逐渐转移到较大问题
for (int i = 3; i <= n ; i++) {
dp[i] = dp[i-1]+dp[i-2];
}
return dp[n];
}

public static void main(String[] args) {
int res =climbingStairsDp(3);
System.out.println("res = " + res);
}
}

空间优化版本如下
/* 爬楼梯:空间优化后的动态规划 */
int climbingStairsDPComp(int n) {
if(n==1||n==2) return n;
inta=1,b=2; for(inti=3;i<=n;i++){
inttmp=b; b=a+b; a=tmp;
}
return b; }

  • Post title:algorithm
  • Post author:秋水
  • Create time:2024-02-01 22:53:08
  • Post link:tai769.github.io2024/02/01/algorithm/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.