V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jiangzm
V2EX  ›  算法

求一个动态规划算法

  •  
  •   jiangzm · 2023-11-16 22:40:48 +08:00 · 1138 次点击
    这是一个创建于 406 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大概需求是这样的 1 、有 N 个盒子,每个盒子有 50 个针位 2 、有 M 种钻针,每一种钻针数量不定(可以大于 50 ) 3 、同一种钻针需大于 50 才能轮换到其他盒子

    给定多种钻针及数量,求使用最少盒子的排放组合?

    eg: | 钻针 | 数量 | | ----------- | ----------- | | 1 |5 | | 2 |8 | | 3 |20 | | 5 |44 | | 6 |12 | | 7 |120 | | 8 |10 |

    输出 [ [1,1,1,1,1,2,2,2...], [5,5,5,5,5,...] ]

    5 条回复    2023-11-16 23:02:07 +08:00
    xupefei
        1
    xupefei  
       2023-11-16 22:43:08 +08:00 via iPhone
    没看懂,如果一种钻针少于 50 个,那它们必须放在同一个盒子里?
    jiangzm
        2
    jiangzm  
    OP
       2023-11-16 22:44:42 +08:00
    @xupefei 是的
    jiangzm
        3
    jiangzm  
    OP
       2023-11-16 22:56:56 +08:00
    盒子不一定要排满, 最坏的情况就是每一种钻针都是单独的盒子
    xupefei
        4
    xupefei  
       2023-11-16 22:57:58 +08:00 via iPhone
    1. 把每种数量大于 50 的针拿出 50 的倍数出来,放在单独的盒子里。这样做完后每种针的数量必定小于 50 。
    2. 问题简化为了 bin packing ,具体可以在 wikipedia 的页面上找一个近似算法实现一下。
    jiangzm
        5
    jiangzm  
    OP
       2023-11-16 23:02:07 +08:00
    @xupefei 多谢,看了下和装箱问题很接近, 前面一直在查背包问题没找到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1878 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:16 · PVG 00:16 · LAX 08:16 · JFK 11:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.