首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >货架堆叠伪码

货架堆叠伪码
EN

Stack Overflow用户
提问于 2009-08-03 15:43:51
回答 4查看 422关注 0票数 2

假设我有一些连续编号的项目,它们的宽度为1-n个单位,需要以行的形式显示。每行宽m个单位。我需要一些伪代码来为我输出行,这样就可以保持m宽度的限制。这不是背包问题,因为项目必须保持序列号顺序-行尾的空格就可以了。

我一直在追逐这一点,部分原因是我在PHP和jQuery/javascript中都需要它,因此需要伪代码……

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-03 15:47:12

代码语言:javascript
复制
while (!items.isEmpty()) {
  rowRemain = m;
  rowContents = [];
  while (!items.isEmpty() && rowRemain > items[0].width) {
    i = items.shift();
    rowRemain -= i.width
    rowContents.push(i);
  }
  rows.push(rowContents);
}

运行时间为Θ(项目数)

票数 3
EN

Stack Overflow用户

发布于 2009-08-03 15:47:23

模数是你的朋友。我会这样做:

代码语言:javascript
复制
$items = array(/* Your list of stuff */);
$count = 0;
$maxUnitsPerRow = 4; // Your "m" above

while ($item = $items[$count]) {
 if ($count % $maxUnitsPerRow == 0) {
    $row = new row();
 }
$row->addItemToRow($item);
$count++;
}
票数 0
EN

Stack Overflow用户

发布于 2009-08-03 16:06:19

无论如何,我想我已经得到了我想要的东西,PHP --但不确定是否有更简单的方法……

代码语言:javascript
复制
<?php
// working with just a simple array of widths...
$items     = array(1,1,1,2,1,1,2,1);
$row_width = 0;
$max_width = 2;

echo "Begin\n"; // begin first row
foreach($items as $item=>$item_width) {
  // can we add item_width to row without going over?
  $row_width += $item_width;
  if($row_width < $max_width) {
    echo "$item_width ";
  } else if($row_width == $max_width) {
    echo "$item_width";
    echo "\nEnd\nBegin\n"; // end last row, begin new row
    $row_width = 0;
  } else if($row_width == 2* $max_width) {
    echo "\nEnd\nBegin\n"; // end last row, begin new row
    echo "$item_width";
    echo "\nEnd\n"; // end new row
    $row_width = 0;
    if($item < count($items)) echo "Begin\n"; // new row
  } else if($row_width > $max_width) {
    echo "\nEnd\nBegin\n"; // end last row, begin new row
    echo "$item_width";
    $row_width = $item_width;
  }
}
echo "\nEnd\n"; // end last row

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1223070

复制
相关文章

相似问题

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