对于蓝桥杯动态规划题目:砝码称重的思考

本文讨论了dp数组在解决蓝桥杯等问题中的重要性,强调了如何通过唯一标识变量(如砝码重量)和可变变量(砝码数量)设计dp数组,并解释了为何dp[i][j]不适用,因为无法唯一标识状态。作者还揭示了重复子问题的本质和如何通过总重量作为状态变量来计算种数。
摘要由CSDN通过智能技术生成

面相蓝桥杯初学者的提示
题目:
problem我看几乎所有的dp问题都很少去谈到dp数组怎么来的。转换方程在看了一些题目后感觉要好一点,但dp数组还是对于新手很不友好。
为什么dp数组要这样去设计?

首先我咨询了一下GPT-3.5得到下面的信息:
重要步骤

但我还是不太明白,怎么办?

我发现了一个问题中唯一不变的标识变量:砝码能够称重的重量,
以及影响这个表示变量的可变变量砝码的数量(一般设前i个比较多)。所以就不难理解为什么题解中会把重量这个不常用的变量用于dp数组。

你还没明白↓

Q1:想一想为什么不是dp[i][j] (代表左右的砝码数量)?
因为它不能唯一标识,dp[i][j] 和dp[j][i] 表示的情况一样的。

Q2:重复的究竟是什么?
我们要找的重复子问题是要可以从以及确定的状态中得到(推导出)新的,下一个状态的value。所以下一个状态会包含原有状态的。

当我们有:
3
1 2 3
这个数据时,{ 1, 2 ; #} 和 { 3 ; #}可以明显看见是总重量 重复了。(再加上题目结尾的暗示) 所以这个时候 总重量不是为value就是作为第二个变量了。 而我们的目的是找到种数,所以values可能是种数。故变量部分已经全了。(写的乱,见谅)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值