burnbrid
V2EX  ›  算法

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

  •  
  •   burnbrid · Aug 20, 2019 · 4955 views
    This topic created in 2637 days ago, the information mentioned may be changed or developed.

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

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

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

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

    16 replies  •  2019-08-20 10:28:16 +08:00
    maichael
    maichael
    Aug 20, 2019
    1
    你这题有歧义呀,能提 1 个和 2 个,是不是还能提 3 个 4 个?限制条件不够。
    burnbrid
    burnbrid
    OP
    Aug 20, 2019
    2
    @maichael 是可以提取多个数字,其实我的目的就是从一个池子里面抓钱,要尽可能的多抓钱。但是,抓的钱最多不能超过或等于 100 块。
    maichael
    maichael
    Aug 20, 2019
    3
    @burnbrid #2 那你第一个例子里面,即可以选 90+8+1,也可以选 96+3,也可以选 96+3+1。答案也可以多个解吗?
    maichael
    maichael
    Aug 20, 2019
    4
    @maichael #3 96+2+1
    misaka19000
    misaka19000
    Aug 20, 2019 via Android
    5
    动态规划吧
    misaka19000
    misaka19000
    Aug 20, 2019 via Android
    6
    动态规划
    burnbrid
    burnbrid
    OP
    Aug 20, 2019
    7
    @maichael 是的,提取几个数字无所谓,最关键是不能超过 100 块。可以提取多个数字,也可以提取一个数字。其实我的目的就是从一个池子里面抓钱,要尽可能的多抓钱。但是,抓的钱最多不能超过或等于 100 块,至于你抓多少张钱我不关心,我关心的是抓的钱要尽可能接近 100 块但不能超过 100 块,。
    ytmsdy
    ytmsdy
    Aug 20, 2019
    8
    f(x) = x_number +f(x -x_number)
    x_number:数组中第一个小于 x 的数字
    louiswang002
    louiswang002
    Aug 20, 2019 via iPhone
    9
    动态规划-宝石谜题
    ahaxzh
    ahaxzh
    Aug 20, 2019
    10
    dp
    ylsc633
    ylsc633
    Aug 20, 2019
    11
    粗略一想 贪心算法

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

    那就动态规划了
    finalwave
    finalwave
    Aug 20, 2019
    12
    这不就是个容量 100 的背包问题,最多能塞多少
    kkeiko
    kkeiko
    Aug 20, 2019
    13
    简单的思路:排序,头尾双指针,往中间走。复杂度 O(nlogn)
    进阶一点:动态规划,复杂度 O(n)
    wqzjk393
    wqzjk393
    Aug 20, 2019
    14
    盲猜一个。。
    先 sort 一遍。
    定义一个余数变量初始为 100。遍历一遍数组,每遍历一个数令余数=(余数-当前数),然后在数组中小于余数的部分中再次遍历。每当余数-当前数小于 0 或者遍历完以后停止遍历,把余数和遍历到的数分别放进两个数组中。比较余数,然后找对应位置的遍历结果就是答案了。。
    kkk0406
    kkk0406
    Aug 20, 2019
    15
    动态规划 背包问题
    antipro
    antipro
    Aug 20, 2019 via Android
    16
    我想到一个简单办法,把这组数中所有可能的组合列出来各自求合,再做个倒序排序,最接近 100 的数字对应的组合就是你要的答案了,当然可能会有多个解。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   656 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 18:33 · PVG 02:33 · LAX 10:33 · JFK 13:33
    ♥ Do have faith in what you're doing.