dp分析法

1. dp分析法:

从集合角度来分析。
有限集合的最值。
在这里插入图片描述后面用具体的例子来学习这个dp分析法。

2. 动态规划题目特点:

1.计数
(1)有多少种方式走到右下角
(2)有多少种方法选出k个数使得和是sum
2.求最大最小值
(1)从左上角走到右下角路径得最大数字和
(2)最长上升子序列长度
3.求存在性
(1)取石子游戏,先手是否必胜
(2)能不能选出k个数使得和是sum

3. 01背包问题

在这里插入图片描述在这里插入图片描述

import java.util.Scanner;

public class Main {
   
	static int N=101;
	public static void main(String[] args) {
   
    	Scanner sc 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
动态规划是解决背包问题的一种常用方,它是将原问题分解成更小规模的子问题,然后逐层求解,最终得到原问题的最优解。在背包问题中,最常见的有0-1背包、完全背包和多重背包等类型。动态规划通常通过一个二维数组来记录子问题的解,数组的行代表背包的容量,列代表物品的权重。 算分析主要涉及以下几个方面: 1. **时间复杂度**:动态规划背包问题的时间复杂度通常是O(nW),其中n是物品的数量,W是背包的容量。这是因为我们需要填充整个二维数组,每个位置都需要一次比较和决策。 2. **空间复杂度**:空间复杂度取决于状态数,即背包容量和物品数量的最大乘积,为O(nW)。这是因为在最坏的情况下,我们需要存储所有可能的状态。 3. **最优子结构**:动态规划的精髓在于问题的最优解可以通过其子问题的最优解推导出来,满足“最优决策依赖于子问题最优解”的特性。 4. **重叠子问题**:背包问题中存在重叠子问题,例如计算不同容量下装入某个物品后的最大价值,我们可能会多次计算相同的子问题,这正是使用动态规划表(记忆化搜索)可以避免重复计算的地方。 5. **状态转移方程**:对于0-1背包,状态转移方程通常表示为dp[i][w] = max(dp[i-1][w], dp[i-1][w-w_i] + val_i),其中dp[i][w]表示容量为w时包含第i个物品的最大价值;对于完全背包,所有物品都可以无限次取用,因此没有限制条件。 **相关问题--:** 1. 背包问题如何定义状态? 2. 动态规划在解决背包问题中的具体步骤是什么? 3. 何时使用记忆化搜索优化动态规划的效率?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值