Foxtable(狐表)用户栏目专家坐堂 → 求助一段计算代码~


  共有1729人关注过本帖平板打印复制链接

主题:求助一段计算代码~

帅哥哟,离线,有人找我吗?
huangxueyao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
求助一段计算代码~  发帖心情 Post By:2017/4/17 7:45:00 [只看该作者]

假如
drs = DataTables("订单明细").Select("[产品] = 'PD01',"数量 DESC")
查询到的订单中,数量按以下排列:
7
6
5
4
3
2
1
一个订单有7个产品,
我们打包时,有两个条件:
1、每个包裹的数量小于等于10;
2、同一个订单的所有包裹的产品数量应该尽可能平均。

我的思路是:
  1. 计算出产品总数M=27
  2. 计算出包裹总数N=27/10,向上取整为3
  3. 计算出每个包裹应该包装的产品平均数m=27/3=9
  4. 按照select的结果从大到小排序,从第一个(7)开始
    1. 如果≥m,此产品单独组合成一个包裹;
    2. 如果<m:
      1. 查询第二个记录,产品数量相加,如果总数>10,组合失败,继续往下查询;
      2. 当某两个产品的组合数量<m时,继续往下组合,直到满足≥m且≤10时,这个包裹才算成功。
这样的话,如果订单记录是:
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

我的困难主要是:组合阶段的代码
这里涉及比较多的嵌套,而且已经成功组合过包裹的产品在下一次计算中又要排除掉。

求帮忙………………
万分感谢~

 回到顶部