如题,各位大佬摸鱼的时间看看怎么解决!!感谢! 感恩!思密达!
公司业务需要,把我难倒了。各位大佬看看能不能摸鱼的时间来看看这个需求。代码递归跑的内存都溢出了,万分感谢。
题目:
有两组数字数组数据,数组 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
]
201
SenseHu 2022-11-18 11:51:09 +08:00
@diandian666 那这个设计有问题啊,合并的单 A 如果是由 a,b,c,e 组成 那应该用产品 id 这种唯一且不会重复的信息标记,而不是金额这种有可能重复的记录。 再严谨一点,一单里面如果有多个同样的商品, 这个商品还要再加一个标记来区别
|
202
jimmylee 2022-11-18 12:43:54 +08:00
楼主是在公司开发商用亚马逊 ERP 吗,是哪个呀? @diandian666
|
203
nicevar 2022-11-18 13:10:31 +08:00
这个太眼熟了,一看是商品销售业务分成啊,几年前某个运营商曾经有人找我做过这个,处理手机销售分成业务,他们之前也是人肉处理的,后面用 Excel 的自动规划,但是太慢了,经常半小时没出结果,后来我用 python 给写了一个,掏出之前的软件试了一下,完全能满足楼主的需求。。。
|
204
tabris233 2022-11-18 20:32:10 +08:00 via iPhone
@diandian666 值域有限制吗? 小数点后最多 2 位嘛?
|
207
diandian666 OP @maggch97 最后用了大佬 JS 写的方法。感谢大佬,感谢各位提供代码和思路的伙伴。没有每个都能及时回复,此贴结。感恩..
|