首页 > 教育学习 > 为什么 > 类似装箱怎么实现?

类似装箱怎么实现?
2012-01-19 20:24:05   来源:   点击:

    类似装箱怎么实现?具体需求是一堆两种颜色(黑,白)有顺序编号的直径相同的圆柱体和一堆直径相通的圆柱体杯子。要把圆柱体依次(固定顺序)放入杯子中不能溢出杯子,如果溢出一部分,白色可以裁切,溢出部分放入下一个杯子,如果黑色就直接放入下一个杯子,取黑色编号的下一个填补空缺(如果有溢出,要裁切,裁切出的溢出部分放入下个杯子黑色的上面)。直到所有圆柱体都放入杯子,求出需要的杯子数和杯子里面圆柱体的编号(按照放入杯子的顺序)和裁切部分的高度。

    1 个答案

    • 答案 1:

      var cups = [], cupHeight = 100, columns = [ { id : 1, type : 0, height : 60 }, { id : 2, type : 1, height : 91 }, { id : 3, type : 1, height : 30 }, { id : 4, type : 0, height : 90 } ]; var insert = function () { for (var i = 0 ; i < cups.length ; ++ i) { if (cups[i].height >= columns[0].height) { cups[i].height -= columns[0].height; cups[i].columns.push(columns.shift()); return; } else if (cups[i].height && columns[0].type == 0) { var temp = { id : columns[0].id, type : 0, height : columns[0].height - cups[i].height }; columns[0].height = cups[i].height; cups[i].height = 0; cups[i].columns.push(columns.shift()); columns.unshift(temp); return; } } var temp = { columns : [], height : cupHeight }; cups.push(temp); arguments.callee(); }; while (columns.length) { insert(); } /* 实现思路 重复以下 1、拿到最近的杯具,执行操作,如果切分,则把切完多余的柱子,放到杯具数组的顶端 2、没有杯具够用了(不是正好放下,也不是可以切,就加个新杯具 */ if (window.console) { console.log(cups); }

相关热词搜索:

上一篇:谁知道“苏昱(Rainer Su)”这位大大的经历?
下一篇:唱和声时如何防止走音(被人带跑/找不着自己的调)?