自构物品的完全背包问题(完全平方数)

题目

在这里插入图片描述

题目解析

首先声明这就是一个完全背包问题,为什么呢?因为题目就是需要你找到完全平方数去填补数字n使得填补所用的完全平方数最少,而这些完全平方数可以无限使用。显然我们不清楚的就是背包内要装的物品,因为题目并未给出。

关于背包内要装入的物品,我们根据题意可知是小于sqrt(n)的完全平方数,所以我们可以通过枚举1~sqrt(n)范围内的完全平方数得到背包内要装入的物品。

有这个物品后,我们就完全可以看作是零钱兑换

  • 给你不同的面额,要求用最少张的钞票兑换成金额n。

把题目转成了零钱兑换问题是不是有背包问题内味了?

接下来就是完全背包的讲解过程了。
dp关系不清楚可以看看我对昨天那道每日一题完全背包的讲解过程零钱兑换II
此题dp[i][j]代表选择前i类物品装满j所用的最少物品数。
d p [ i ] [ j ] = m i n ( d p [ i − 1 ] [ j ] + d p [ i ] [ j − n u m s [ i − 1 ] ] ) dp[i][j]=min(dp[i-1][j]+dp[i][j-nums[i-1]]) dp[i][j]=min(dp[i1][j]+dp[i][j

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值