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

十年程序员难倒了一个算法上面,真的老了

  •  
  •   diandian666 · 2022-11-15 17:40:20 +08:00 · 24618 次点击
    这是一个创建于 739 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,各位大佬摸鱼的时间看看怎么解决!!感谢! 感恩!思密达!

    公司业务需要,把我难倒了。各位大佬看看能不能摸鱼的时间来看看这个需求。代码递归跑的内存都溢出了,万分感谢。

    题目:

    有两组数字数组数据,数组 1 的数据的总和 = 数组 2 数据的总和。数组 1 的数量 <= 数组 2 的数量。且数组 1 中每一个数字都可以对应数组 2 中 N 个数字的和。找出数组 1 中的数字对应数组 2 中的数据。不能重复使用。 注:不用担心匹配不上的情况,这两组数据都是有根据出来的,绝对能匹配成功,之前都是人工匹配的,现在想用代码直接取代人工。

    题目说的有点不清楚,举例:

    数组 1: [62.13,26.67,17.76]

    数组 2:[24.92,5.88,5.04,3.64,3.45,3.36,2.8,2.8,2.52,2.24,2.24,2.24,1.96,1.96,1.8,1.68,1.4,1.4,1.4,1.2,1.2,1.15,1.12,1.12,1.12,1.12,1.12,0.84,0.84,0.84,0.84,0.84,0.84,0.84,0.84,0.84,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.4,0.4,0.4,0.4,0.4,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28]

    最终需要匹配出来结果

    62.13=>[24.92,5.88,5.04,3.64,3.45,2.8,2.8,2.52,2.24,2.24,2.24,1.96,1.2,1.2],

    26.67=>[1.96,1.68,1.4,1.15,1.12,1.12,0.84,0.84,0.84,0.84,0.84,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.4,0.4,0.4,0.4,0.4,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28,0.28]

    17.76=>[3.36,1.8,1.4,1.4,1.12,1.12,1.12,0.84,0.84,0.84,0.84,0.56,0.56,0.56,0.56,0.56,0.28]

    上面就是匹配的结果。

    我这边多提供两组数据供测试,下面的两组测试成功的话,再尝试上面提到的那组数据,毕竟上面那组数据多,影响测试

    第一组:

    数组 1 [52.7,8.96]

    数组 2 [21.44,6.72,5.44,5.12,4.48,3.20,2.24,1.92,1.92,1.92,1.28,1.28,1.00,0.96,0.50,0.32,0.32,0.32,0.32,0.32,0.32,0.32]

    第二组:

    数组 1 [23.17,3.2,1.22,0.32]

    数组 2 [7.36,4.16,3.20,1.69,1.28,1.28,0.96,0.96,0.90,0.64,0.64,0.64,0.50,0.50,0.32,0.32,0.32,0.32,0.32,0.32,0.32,0.32,0.32,0.32

    ]

    207 条回复    2022-12-29 16:28:29 +08:00
    1  2  3  
    SenseHu
        201
    SenseHu  
       2022-11-18 11:51:09 +08:00
    @diandian666 那这个设计有问题啊,合并的单 A 如果是由 a,b,c,e 组成 那应该用产品 id 这种唯一且不会重复的信息标记,而不是金额这种有可能重复的记录。 再严谨一点,一单里面如果有多个同样的商品, 这个商品还要再加一个标记来区别
    jimmylee
        202
    jimmylee  
       2022-11-18 12:43:54 +08:00
    楼主是在公司开发商用亚马逊 ERP 吗,是哪个呀? @diandian666
    nicevar
        203
    nicevar  
       2022-11-18 13:10:31 +08:00
    这个太眼熟了,一看是商品销售业务分成啊,几年前某个运营商曾经有人找我做过这个,处理手机销售分成业务,他们之前也是人肉处理的,后面用 Excel 的自动规划,但是太慢了,经常半小时没出结果,后来我用 python 给写了一个,掏出之前的软件试了一下,完全能满足楼主的需求。。。
    tabris233
        204
    tabris233  
       2022-11-18 20:32:10 +08:00 via iPhone
    @diandian666 值域有限制吗? 小数点后最多 2 位嘛?
    quxw
        205
    quxw  
       2022-11-18 20:38:21 +08:00 via iPhone
    @hicdn 我的电脑跑的还挺快的
    hicdn
        206
    hicdn  
       2022-11-19 00:30:47 +08:00
    @quxw 我电脑比较老,Intel 6 代 CPU
    diandian666
        207
    diandian666  
    OP
       2022-12-29 16:28:29 +08:00
    @maggch97 最后用了大佬 JS 写的方法。感谢大佬,感谢各位提供代码和思路的伙伴。没有每个都能及时回复,此贴结。感恩..
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2778 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:07 · PVG 21:07 · LAX 05:07 · JFK 08:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.