在Python中查找放入仓库的箱子数量的程序
假设我们有两个包含整数的数组。一个列表包含一些等宽箱子的高度,另一个数组包含仓库中房间的高度。房间编号为0…n,并且它们的高度在它们各自的索引中提供在数组godown中。我们必须找出可以推入仓库的箱子数。必须记住以下几点,
- 箱子不能相互放置。
-
箱子的顺序可以改变。
-
箱子仅从左到右放入仓库。
如果箱子比房间的高度高,则无法将箱子及其右侧的所有箱子推入仓库。
因此,如果输入为boxes = [4,5,6],godown = [4, 5, 6, 7],则输出将为1。只能插入一个盒子。第一个房间的大小为4,其长度小于其他箱子,因此其他箱子无法推入仓库。
解决此问题,我们将遵循以下步骤 –
- 对箱子列表进行排序
-
curmin:包含godown的第一个元素的新列表
-
cm :curmin[0]
-
对于i在1到大小为godown的范围内,执行
- cur:godown[i]
-
如果cur < cm,则
- cm := cur
- 在curmin的末尾插入cm
-
i:= 0
-
j := godown的大小 -1
-
r := 0
-
当j > = 0且i < boxes的大小时,执行
- 如果curmin[j] > = boxes[i],则
- i := i + 1
-
r := r + 1
-
j := j – 1
- 如果curmin[j] > = boxes[i],则
-
返回r
更多Python相关文章,请阅读:Python 教程
示例(Python)
看看以下实现以获得更好的理解 –
def solve(boxes, godown):
boxes.sort()
curmin = [godown[0]]
cm = curmin[0]
for i in range(1, len(godown)):
cur = godown[i]
if cur < cm:
cm = cur
curmin.append(cm)
i,j = 0, len(godown)-1
r = 0
while j >= 0 and i < len(boxes):
if curmin[j] >= boxes[i]:
i += 1
r += 1
j -= 1
return r
print(solve([4,5,6], [4, 5, 6, 7]))
输入
[4,5,6], [4, 5, 6, 7]
输出
1