题意:一个杠杆,中心有支点,两边有挂钩,挂钩位置由输入给定。有一些砝码,砝码重量由输入给定。一个挂钩下可以挂多个砝码,也可以什么都不挂,但每个砝码必须都用。问有多少种组合方式,可以使杠杆平衡。
做这题,切身体会到了 DP才是王道 这话的含义。
初看题目,穷举。看DISCUSS,原来是DP。
像这种组合方式很多,但状态空间却不大的,一般都可以交给DP。
DP[i][j]表示放置第i个物品后,总质量为j的可能组合的数量。
状态转移方程 DP[i+1][j]=sum{DP[i][j-weight[i]*hook[k]](1<=k<=C)}
初始化 DP[0][0]=1,最后输出 DP[G][0].
因为DP[i][j]中j可能为负数,在代码中给j加上一个偏移量base。
本文介绍了一种使用动态规划(DP)方法解决杠杆平衡问题的算法。通过定义DP[i][j]表示放置第i个砝码后总质量为j的组合数量,并给出状态转移方程,实现了对所有可能组合的有效计算。
126

被折叠的 条评论
为什么被折叠?



