为什么常识

类似装箱怎么实现?

生活词典 changshi.cidiancn.com

阅读: 227

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

答案 1:

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

分享常识给亲友.