qiayue
V2EX  ›  问与答

求一个算法,从一个数组(如 [13,11,10,9,6,5,4,3,2,1] )中,找出多个数,使这些数的和是一个定值(如 40),数可以重复使用

  •  
  •   qiayue · Aug 9, 2014 · 5912 views
    This topic created in 4474 days ago, the information mentioned may be changed or developed.
    其实就是会员购买了 40 元的零食盒,现在我根据他的喜好找出来了一些零食,这些零食的价格组成了一个数组,现在需要从这些零食中挑选一些出来组成一盒零食。
    Supplement 1  ·  Aug 9, 2014
    感谢大家!


    另外再回答 @pimin 的疑问
    在得到这个数组之前我已经做了很多处理了,主要考虑的因素是:
    1、他喜欢吃的零食的其他也喜欢吃的会员们喜欢吃的零食(好绕口)
    2、他不喜欢吃的零食的其他会员们也不喜欢吃的零食
    3、他喜欢吃的零食的其他类似零食

    最终得到了一些零食,这些零食有各种价格,我对这些价格取整并去重之后,得到了题中的数组。
    15 replies  •  2014-08-16 17:24:04 +08:00
    bcxx
    bcxx
    Aug 9, 2014❤️1
    1
    背包啊……
    wong2
    wong2
    Aug 9, 2014❤️1
    2
    啊,看到了算法在日常中的使用~
    QuakeX
    QuakeX
    Aug 9, 2014❤️1
    3
    背包啊
    XadillaX
    XadillaX
    Aug 9, 2014❤️1
    4
    而且是无限背包 -。 -
    canesten
    canesten
    Aug 9, 2014❤️2
    5
    lua实现:

    local price = {13,11,10,9,6,5,4,3,2,1}

    local balance = 40

    function randomFood()
    math.randomseed(os.time())
    math.random(100)
    math.random(100)
    math.random(100)
    math.random(100)
    local result = {}
    local num = #price
    while balance > 0 do
    local rangeLeft = 0
    for i = 1, num do
    if price[i] <= balance then
    rangeLeft = i
    break
    end
    end
    if rangeLeft == 0 then
    break
    end
    local randomIndex = math.random(rangeLeft, num)
    local randomPrice = price[randomIndex]
    balance = balance - randomPrice
    table.insert(result, randomPrice)
    print(randomPrice)
    end
    print(balance)
    end

    randomFood()

    楼主拿去玩
    canesten
    canesten
    Aug 9, 2014❤️1
    6
    没了缩进好丑
    不过脚本语言无所谓了
    楼主拿去跑就是了
    pimin
    pimin
    Aug 9, 2014 via iPhone❤️1
    7
    楼主我是来踢场子的:
    我觉得这题解法不是很好,如果是要做礼盒,可以按销量分层组一个礼盒。
    而不是用单价来组。
    dingyaguang117
    dingyaguang117
    Aug 9, 2014❤️1
    8
    =。= 背包9讲
    andychen20121130
    andychen20121130
    Aug 9, 2014❤️1
    9
    你觉得40个1怎么?
    qiayue
    qiayue
    OP
    Aug 9, 2014❤️1
    10
    @andychen20121130 如果你有这个需要的话,可以在订单备注中说明
    takato
    takato
    Aug 9, 2014❤️1
    11
    无限背包无误。。
    no13bus
    no13bus
    Aug 9, 2014❤️1
    12
    @wong2 同感觉
    yangxiongwei
    yangxiongwei
    Aug 9, 2014❤️1
    13
    xming
    xming
    Aug 16, 2014
    14
    @qiayue 网站存在bug,连续点两下注册,可生成一个用户账号。
    订单号: 1408121724345339
    什么时间可以发货,你们发货有什么规律?发哪家快递?网站怎么连个联系你们的方式都没有。。。
    qiayue
    qiayue
    OP
    Aug 16, 2014
    15
    @xming 不好意思,网站一直在写功能代码,明天就放上联系方式去。
    每周日发货,视远近不同,大约是周一或者周二到货,发申通
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1469 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 109ms · UTC 09:48 · PVG 17:48 · LAX 01:48 · JFK 04:48
    ♥ Do have faith in what you're doing.