用Python搬运行李?最后一个集装箱进,最后一个出,第一个行李进第一个出口

2024-05-15 10:38:40 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用python解决这个问题?

你把行李装进集装箱。一旦集装箱达到极限(100磅)。你移动到下一个容器。你就是这样装行李的。在

当需要卸载数据时,您将首先卸载最后装载的容器(小于100磅,然后从中取出第一个装载的行李,然后再卸下第二个等),然后您将移动到下一个容器。在

如果问题不清楚。在

下面是加载数组的外观

假设我们有3个集装箱,这是装货安排

 [30,45,15,25,50,20,30,60]

此数组中的最后一个项是第一个加载的项。在第二个行李之后,第一个集装箱无法容纳一个20磅的行李,因此进入下一个集装箱。在

20,50,25进入第二个,15,45,30进入最后一个。在

到了卸货的时候,我们从最后一个集装箱的第一个行李开始,然后按顺序移动。在

因此卸载阵列是

^{pr2}$

有没有能把输入转换成输出的函数?在

记住,每个集装箱必须保持在100磅以下??在

有什么想法吗?在

抱歉,如果这个问题漫无目的,这是我在堆栈上的第一个问题

谢谢!在

以下是我迄今为止所做的尝试:

A=[15,20,25,45,20,30,65] 
output=[20,15,20,45,25,65,30] 

    def input_output(A):
       for i in range(1,len(A)): 
           B=[]*len(A) 
           if A[-i]<100: 
                  B[0]=A[-i] 
                  B[i]=A[-i-1]+B[i-1] 
                  if B[i]>100: 
                      for j in range(1,i): 
                             C=[]*len(A)
                             C[-i]=A[i-len(A)]# Need a subarray to get reversed.
                                 #I don't feel this is going the right direction
                                 # C is my intended output array

Tags: 数据inforoutputlenifis集装箱
1条回答
网友
1楼 · 发布于 2024-05-15 10:38:40

你需要考虑一下你的算法 你正在创建基于100的箱子,所以构造它们,然后解构以获得预期的输出。使用[-1]作为索引意味着总是添加到bins中的最后一个bin:

A = [15,20,25,45,20,30,65] 
bins = [[]]
for i in reversed(A):
    if sum(bins[-1]) + i > 100:
        bins.append([])
    bins[-1].append(i)

>>> bins
[[65, 30], [20, 45, 25], [20, 15]]

因此,您只需反转并压平垃圾箱即可,这可以通过多种方式实现:

^{pr2}$

相关问题 更多 >