算法-在一组数中,把相加之和最近 100 的数,提取出来。

2019-08-20 09:14:06 +08:00
 burnbrid

算法-在一组数中,把相加之和最近 100 的数,提取出来。 举个例子:

1 3 90 2 8 96 在这组数中应该把 96 和 3 这个俩个数提取出来。

1 2 3 8 96 99 在这组数中应该把 99 这一个数提取出来。

大神帮帮忙,我支持香港警察,你们可以帮我了。

3999 次点击
所在节点    算法
16 条回复
maichael
2019-08-20 09:17:53 +08:00
你这题有歧义呀,能提 1 个和 2 个,是不是还能提 3 个 4 个?限制条件不够。
burnbrid
2019-08-20 09:21:48 +08:00
@maichael 是可以提取多个数字,其实我的目的就是从一个池子里面抓钱,要尽可能的多抓钱。但是,抓的钱最多不能超过或等于 100 块。
maichael
2019-08-20 09:24:14 +08:00
@burnbrid #2 那你第一个例子里面,即可以选 90+8+1,也可以选 96+3,也可以选 96+3+1。答案也可以多个解吗?
maichael
2019-08-20 09:24:34 +08:00
@maichael #3 96+2+1
misaka19000
2019-08-20 09:27:05 +08:00
动态规划吧
misaka19000
2019-08-20 09:27:52 +08:00
动态规划
burnbrid
2019-08-20 09:33:28 +08:00
@maichael 是的,提取几个数字无所谓,最关键是不能超过 100 块。可以提取多个数字,也可以提取一个数字。其实我的目的就是从一个池子里面抓钱,要尽可能的多抓钱。但是,抓的钱最多不能超过或等于 100 块,至于你抓多少张钱我不关心,我关心的是抓的钱要尽可能接近 100 块但不能超过 100 块,。
ytmsdy
2019-08-20 09:36:07 +08:00
f(x) = x_number +f(x -x_number)
x_number:数组中第一个小于 x 的数字
louiswang002
2019-08-20 09:38:20 +08:00
动态规划-宝石谜题
ahaxzh
2019-08-20 09:44:18 +08:00
dp
ylsc633
2019-08-20 09:53:35 +08:00
粗略一想 贪心算法

又想了下,贪心算法不正常

那就动态规划了
finalwave
2019-08-20 10:02:16 +08:00
这不就是个容量 100 的背包问题,最多能塞多少
kkeiko
2019-08-20 10:16:23 +08:00
简单的思路:排序,头尾双指针,往中间走。复杂度 O(nlogn)
进阶一点:动态规划,复杂度 O(n)
wqzjk393
2019-08-20 10:23:20 +08:00
盲猜一个。。
先 sort 一遍。
定义一个余数变量初始为 100。遍历一遍数组,每遍历一个数令余数=(余数-当前数),然后在数组中小于余数的部分中再次遍历。每当余数-当前数小于 0 或者遍历完以后停止遍历,把余数和遍历到的数分别放进两个数组中。比较余数,然后找对应位置的遍历结果就是答案了。。
kkk0406
2019-08-20 10:24:58 +08:00
动态规划 背包问题
antipro
2019-08-20 10:28:16 +08:00
我想到一个简单办法,把这组数中所有可能的组合列出来各自求合,再做个倒序排序,最接近 100 的数字对应的组合就是你要的答案了,当然可能会有多个解。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/593372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX