Python 我的代码没有通过所有测试

Python 我的代码没有通过所有测试,python,arrays,python-3.x,Python,Arrays,Python 3.x,我正在尝试完成google foobar挑战#4-escape pods,我的代码通过了google foobar上4个测试用例中的3个,我不确定我的代码出了什么问题。问题是 编写一个函数解决方案(入口、出口、路径),它采用一个整数数组表示聚集的兔子群在哪里,一个整数数组表示逃生舱在哪里,以及一个走廊整数数组,以整数形式返回每个时间步可以通过的兔子总数。入口和出口是不相交的,因此永远不会重叠。路径元素path[A][B]=C描述了从A到B的走廊在每个时间步都可以容纳C个兔子。走廊连接的房间最多有

我正在尝试完成google foobar挑战#4-escape pods,我的代码通过了google foobar上4个测试用例中的3个,我不确定我的代码出了什么问题。问题是

编写一个函数解决方案(入口、出口、路径),它采用一个整数数组表示聚集的兔子群在哪里,一个整数数组表示逃生舱在哪里,以及一个走廊整数数组,以整数形式返回每个时间步可以通过的兔子总数。入口和出口是不相交的,因此永远不会重叠。路径元素path[A][B]=C描述了从A到B的走廊在每个时间步都可以容纳C个兔子。走廊连接的房间最多有50间,一次最多可容纳200万只兔子

例如,如果您有: 入口=[0,1] 出口=[4,5] 路径=[ [0,0,4,6,0,0],#0号房间:兔子 [0,0,5,2,0,0],#第1房间:兔子 [0,0,0,0,4,4],#第2房间:中间房间 [0,0,0,0,6,6],#第3房间:中间房间 [0,0,0,0,0,0],#第4房间:逃生舱 [0,0,0,0,0,0],#第5房间:逃生舱 ] 然后,在每个时间步骤中,可能会发生以下情况: 0向2发送4/4个兔子,向3发送6/6个兔子 1向2发送4/5个兔子,向3发送2/2个兔子 2将4/4兔子发送到4,将4/4兔子发送到5 3将4/6兔子发送到4,将4/6兔子发送到5

因此,总共有16只兔子可以在每一个时间步的4和5点到达逃生舱。(请注意,在本例中,房间3可以将8只兔子的任何变化发送到4和5,例如2/6和6/6,但最终的解决方案保持不变。)

我多次尝试重新编写代码,但我不明白我做错了什么

def解决方案(入口、出口、布局):
出口房间=布局[出口[0]:]
新的_布局=[]
对于布局中的i:
温度=[]
第一项:
如果项目!=0:
临时追加(项目)
新布局追加(临时)
入口=已排序(新的_布局[:入口[-1]+1])[:-1]
房间到移除=已排序(入口+出口)[:-1]
对于要删除的房间中的i:
del new_布局图[i]
中间房间=新的布局
最大出口房间=[]
对于出口房间中的吊舱:
最大出口房间。附加(最大(吊舱))
最大出口房间=最大(最大出口房间)
计数=0
尽管如此:
最大房间开关=长(中间房间)
当前_房间=0#开关中间房间
入口房间:
xroom=房间
#如果中间房间的数量小于房间中的兔子数量
如果(最大房间开关)=透镜(房间)和透镜(房间)>1:
xroom=已排序(房间)
X房间。移除(最小(房间))
对于xroom中的兔子:
最大房间=最大(中间房间[当前房间])
n=最大房间-兔子
如果n 0:
计数+=兔子
#房间开关
如果最大房间开关>1:
如果最大房间开关==当前房间:
打破
其他:
如果当前房间=最大房间开关-1:
当前房间=0
其他:
当前房间+=1
打破
#打印(计数)
返回计数

对于前两个给定的测试,代码通过了(6,16),而对于最后一个测试,答案是935,我希望你通过了这个问题。无论如何,让我发布一个可能的问题解决方案:

请注意,在每个中间房间级别上,房间的索引都是兔子数量的索引。对于中间房间2,穿过房间2的兔子是“4+5”。这些值分别位于兔子列表中的索引2处。因此,我们可以利用这一点起草一个可能的解决方案:

def solution(entrances, exits, path):
    le = len(entrances)
    lp = len(path)
    lx = len(exits)
    bunn_count = 0
    inter_paths = path[le:(lp-lx)]                # To find all intermediate rooms
    for i in range(lp - le - lx):                 # Loop through range of length of intermediate rooms
        sum_range = sum(inter_paths[i])           # Sum of an intermediate room's possible number of bunnies allowed
        sum_enter = 0                             # Sum of bunnies that enter that room
        for j in entrances:
            sum_enter += path[j][le + i]          # Get all bunnies that enter a room
        bunn_count += min(sum_enter, sum_range)
    return bunn_count

注意:这只是我对这个问题的解决方案。也许你可以参考和寻求更好的解决方案。

我希望你已经解决了这个问题。无论如何,让我发布一个可能的问题解决方案:

请注意,在每个中间房间级别上,房间的索引都是兔子数量的索引。对于中间房间2,穿过房间2的兔子是“4+5”。这些值分别位于兔子列表中的索引2处。因此,我们可以利用这一点起草一个可能的解决方案:

def solution(entrances, exits, path):
    le = len(entrances)
    lp = len(path)
    lx = len(exits)
    bunn_count = 0
    inter_paths = path[le:(lp-lx)]                # To find all intermediate rooms
    for i in range(lp - le - lx):                 # Loop through range of length of intermediate rooms
        sum_range = sum(inter_paths[i])           # Sum of an intermediate room's possible number of bunnies allowed
        sum_enter = 0                             # Sum of bunnies that enter that room
        for j in entrances:
            sum_enter += path[j][le + i]          # Get all bunnies that enter a room
        bunn_count += min(sum_enter, sum_range)
    return bunn_count

注意:这只是我对这个问题的解决方案。也许你可以参考和寻求更好的解决方案。

这不是正确的解决方案。这是MAX流问题,并且您不认为对于某些节点输出可能比输入的容量小,这不是正确的解决方案。这是MAX流问题,并且您不认为对于某些节点输出可能比输入容量小。