mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-12 23:36:06 +00:00
Update knapsack_problem and intro_to_dp
Fix avl_tree
This commit is contained in:
@@ -11,7 +11,7 @@ int climbingStairsConstraintDP(int n) {
|
||||
if (n == 1 || n == 2) {
|
||||
return n;
|
||||
}
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
vector<vector<int>> dp(n + 1, vector<int>(3, 0));
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1][1] = 1;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
int climbingStairsDP(int n) {
|
||||
if (n == 1 || n == 2)
|
||||
return n;
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
vector<int> dp(n + 1);
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1] = 1;
|
||||
|
||||
@@ -11,7 +11,7 @@ int minCostClimbingStairsDP(vector<int> &cost) {
|
||||
int n = cost.size() - 1;
|
||||
if (n == 1 || n == 2)
|
||||
return cost[n];
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
vector<int> dp(n + 1);
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1] = cost[1];
|
||||
|
||||
@@ -12,7 +12,7 @@ public class climbing_stairs_constraint_dp {
|
||||
if (n == 1 || n == 2) {
|
||||
return n;
|
||||
}
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
int[,] dp = new int[n + 1, 3];
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1, 1] = 1;
|
||||
|
||||
@@ -11,7 +11,7 @@ public class climbing_stairs_dp {
|
||||
public int climbingStairsDP(int n) {
|
||||
if (n == 1 || n == 2)
|
||||
return n;
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
int[] dp = new int[n + 1];
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1] = 1;
|
||||
|
||||
@@ -49,7 +49,7 @@ public class knapsack {
|
||||
/* 0-1 背包:动态规划 */
|
||||
public int knapsack_dp(int[] weight, int[] val, int cap) {
|
||||
int n = weight.Length;
|
||||
// 初始化 dp 列表
|
||||
// 初始化 dp 表
|
||||
int[,] dp = new int[n + 1, cap + 1];
|
||||
// 状态转移
|
||||
for (int i = 1; i <= n; i++) {
|
||||
@@ -69,7 +69,7 @@ public class knapsack {
|
||||
/* 0-1 背包:状态压缩后的动态规划 */
|
||||
public int knapsack_dp_comp(int[] weight, int[] val, int cap) {
|
||||
int n = weight.Length;
|
||||
// 初始化 dp 列表
|
||||
// 初始化 dp 表
|
||||
int[] dp = new int[cap + 1];
|
||||
// 状态转移
|
||||
for (int i = 1; i <= n; i++) {
|
||||
|
||||
@@ -12,7 +12,7 @@ public class min_cost_climbing_stairs_dp {
|
||||
int n = cost.Length - 1;
|
||||
if (n == 1 || n == 2)
|
||||
return cost[n];
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
int[] dp = new int[n + 1];
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1] = cost[1];
|
||||
|
||||
@@ -12,7 +12,7 @@ public class climbing_stairs_constraint_dp {
|
||||
if (n == 1 || n == 2) {
|
||||
return n;
|
||||
}
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
int[][] dp = new int[n + 1][3];
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1][1] = 1;
|
||||
|
||||
@@ -11,7 +11,7 @@ public class climbing_stairs_dp {
|
||||
public static int climbingStairsDP(int n) {
|
||||
if (n == 1 || n == 2)
|
||||
return n;
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
int[] dp = new int[n + 1];
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1] = 1;
|
||||
|
||||
@@ -14,7 +14,7 @@ public class min_cost_climbing_stairs_dp {
|
||||
int n = cost.length - 1;
|
||||
if (n == 1 || n == 2)
|
||||
return cost[n];
|
||||
// 初始化 dp 列表,用于存储子问题的解
|
||||
// 初始化 dp 表,用于存储子问题的解
|
||||
int[] dp = new int[n + 1];
|
||||
// 初始状态:预设最小子问题的解
|
||||
dp[1] = cost[1];
|
||||
|
||||
@@ -9,7 +9,7 @@ def climbing_stairs_constraint_dp(n: int) -> int:
|
||||
"""带约束爬楼梯:动态规划"""
|
||||
if n == 1 or n == 2:
|
||||
return n
|
||||
# 初始化 dp 列表,用于存储子问题的解
|
||||
# 初始化 dp 表,用于存储子问题的解
|
||||
dp = [[0] * 3 for _ in range(n + 1)]
|
||||
# 初始状态:预设最小子问题的解
|
||||
dp[1][1], dp[1][2] = 1, 0
|
||||
|
||||
@@ -9,7 +9,7 @@ def climbing_stairs_dp(n: int) -> int:
|
||||
"""爬楼梯:动态规划"""
|
||||
if n == 1 or n == 2:
|
||||
return n
|
||||
# 初始化 dp 列表,用于存储子问题的解
|
||||
# 初始化 dp 表,用于存储子问题的解
|
||||
dp = [0] * (n + 1)
|
||||
# 初始状态:预设最小子问题的解
|
||||
dp[1], dp[2] = 1, 2
|
||||
|
||||
@@ -42,7 +42,7 @@ def knapsack_dfs_mem(wgt, val, mem, i, c):
|
||||
def knapsack_dp(wgt, val, cap):
|
||||
"""0-1 背包:动态规划"""
|
||||
n = len(wgt)
|
||||
# 初始化 dp 列表
|
||||
# 初始化 dp 表
|
||||
dp = [[0] * (cap + 1) for _ in range(n + 1)]
|
||||
# 状态转移
|
||||
for i in range(1, n + 1):
|
||||
@@ -59,7 +59,7 @@ def knapsack_dp(wgt, val, cap):
|
||||
def knapsack_dp_comp(wgt, val, cap):
|
||||
"""0-1 背包:状态压缩后的动态规划"""
|
||||
n = len(wgt)
|
||||
# 初始化 dp 列表
|
||||
# 初始化 dp 表
|
||||
dp = [0] * (cap + 1)
|
||||
# 状态转移
|
||||
for i in range(1, n + 1):
|
||||
|
||||
@@ -10,7 +10,7 @@ def min_cost_climbing_stairs_dp(cost: list[int]) -> int:
|
||||
n = len(cost) - 1
|
||||
if n == 1 or n == 2:
|
||||
return cost[n]
|
||||
# 初始化 dp 列表,用于存储子问题的解
|
||||
# 初始化 dp 表,用于存储子问题的解
|
||||
dp = [0] * (n + 1)
|
||||
# 初始状态:预设最小子问题的解
|
||||
dp[1], dp[2] = cost[1], cost[2]
|
||||
|
||||
Reference in New Issue
Block a user