如数组:
var arr = [99.1, 92.2, 60, 50,
49.5, 45.7, 25.1, 20,
17.4, 13, 10, 7, 2.1, 2, 1];
找到和为100的数组元素,或者结果最接近100的组合:
[60,20,10,7,2,1]
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先什么是最接近?
手机端回答编写代码不是很方便,就大概说一下思路,当然说的是和为100的思路。
1、用sort排序数组,从大到小排列,比如有十个数字。
2、for循环先拿到第一个数字和100比较,小于100的把数字拿出来,并记录下i值。接着用100减去这个数,得到一个值a,找到i后面的小于等于a的数字,小于接着减,等于则停止判断,或者减完最后一个数字不为0,停止。
01背包问题用贪心是不能得到最优解的,要用动态规划做
自己顶一下啊 不然就去下面了
DP + 贪心是没错的,但是不是标准的01背包,因为有小数。这里提供简化版思路但是不能处理小数,要处理成整数再做。
假设你给的数组arr是价值,重量都是1,背包容量不限制这里就设置为arr.length,物品个数也是arr.length,然后DP就好。
最后贪心求出拿了哪几个。