首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据总数确定案例数(4,6,12)

根据总数确定案例数(4,6,12)
EN

Stack Overflow用户
提问于 2012-04-29 21:53:52
回答 1查看 85关注 0票数 2

我有一辆装满物品的购物车,如果我能把它们均匀地装入4个、6个或12个的箱子里,而没有剩余的话,我就可以发货。我想我已经弄清楚了,但是如果我的购物车有8件商品,我的代码失败了,因为它计算出16件剩下2件,而不是uut,它可以在24包中工作。当然,8不是唯一可能导致我失败的数字,但这只是一个例子。我如何让我的代码正确地解决这个问题呢?下面是我现在所拥有的,我仍然在$qTY变量中以8作为失败的例子。

代码语言:javascript
复制
$num12s = $tQTY / 12;

$num12s = explode(".", $num12s);
$numCases = $num12s[0];

if($num12s[0] >= 1){

$doSub = $num12s[0] * 12;
$tQTY = $tQTY - $doSub;

}

$num6s = $tQTY / 6;
$num6s = explode(".", $num6s);
$numCases = $numCases + $num6s[0];

if($num6s[0] >= 1){

$doSub = $num6s[0] * 6;
$tQTY = $tQTY - $doSub;

}


$num4s = $tQTY / 4;
$num4s = explode(".", $num4s);
$numCases = $numCases + $num4s[0];

if($num4s[0] >= 1){

$doSub = $num4s[0] * 4;
$tQTY = $tQTY - $doSub;

}

我需要首先填充一个12的箱子,如果我不能这样做,我需要填充一个6的箱子,如果我不能这样做,我需要填充一个4的箱子,但如果我不能这样做,那么2箱4(对于8的购物车)就可以了,或者一个12的箱子,一个6的箱子和一个4的箱子(对于22的购物车),等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-29 22:09:34

假设您只想知道是否可以交付项目(没有关于如何划分包的信息),那么这不是完全没有必要的吗?在这种情况下,这非常简单: evey偶数>=4可以工作,所以它只是:

代码语言:javascript
复制
$possible = ($number>=4 && $number%2==0);

编辑:

如果您还需要更多关于打包的详细信息,我将创建一些类似以下内容的函数(see it working on codepad):

代码语言:javascript
复制
/*
 *  determines if the given number of items is deliverable or not.
 */
function delivery_possible($number_of_items){
  return ($number_of_items>=4 && $number_of_items%2==0);
}

/*
 *  returns an array containing a counter for each package-size given
 *  the number of items. returns false if it can't be solved without
 *  leaving a rest.
 */
function delivery_packages($number_of_items){
  if(!delivery_possible($number_of_items)){
    return false; //impossibru!!!
  }
  $r = array('size4'=>0, 'size6'=>0, 'size12'=>0);

  $r['size12'] = $number_of_items%12==0?(int)($number_of_items/12):(int)(($number_of_items-4)/12);
  $number_of_items -= $r['size12']*12;

  $r['size6'] = $number_of_items%6==0?(int)($number_of_items/6):(int)(($number_of_items-4)/6);
  $number_of_items -= $r['size6']*6;

  $r['size4'] = (int)($number_of_items/4);

  return $r;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10372634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档