以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求助一段计算代码~ (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=99298) |
||||
-- 作者:huangxueyao -- 发布时间:2017/4/17 7:45:00 -- 求助一段计算代码~ 假如 drs = DataTables("订单明细").Select("[产品] = \'PD01\',"数量 DESC") 查询到的订单中,数量按以下排列: 7 6 5 4 3 2 1 一个订单有7个产品, 我们打包时,有两个条件: 1、每个包裹的数量小于等于10; 2、同一个订单的所有包裹的产品数量应该尽可能平均。 我的思路是:
7|6|5|4|3|2|1的话,其包裹组合是7+3|6+4|5+2+1 如果订单记录是: 7|7|7|2|2|1|1的话,其包裹组合是7+2|7+2|7+1+1 如果订单记录是: 4|4|3|3|2|2|1的话,其包裹组合是4+4+2|3+3+2+1 我的困难主要是:组合阶段的代码 这里涉及比较多的嵌套,而且已经成功组合过包裹的产品在下一次计算中又要排除掉。 求帮忙……………… 万分感谢~
|
||||
-- 作者:huangxueyao -- 发布时间:2017/4/17 7:49:00 -- 另外一个思路是,一大配多小 这样的话,如果订单记录是: 7|6|5|4|3|2|1的话,其包裹组合是7+1+2|6+3|5+4 如果订单记录是: 7|7|7|2|2|1|1的话,其包裹组合是7+1+1|7+2|7+2 如果订单记录是: 4|4|3|3|2|2|1的话,其包裹组合是4+1+2+2|4+3+3 [此贴子已经被作者于2017/4/17 7:49:18编辑过]
|
||||
-- 作者:有点色 -- 发布时间:2017/4/17 8:52:00 -- 排列组合的例子参考
你可以任意组合排列出符合10、10、10的组合,比如 7654321 组合就有 721 64 541 73 之类的,然后分析这些是否满足 7654321,满足就可以,如果不满足,就改成符合10、10、9的组合,依次类推。 |