python [内部]如何从数组中检索元素并找到最小值

时间:2017-07-26 05:09:31

标签: python arrays

关于SPOJ的这个问题http://www.spoj.com/problems/ACPC10D/,我写了一个python解决方案如下:

count = 1
while True:
    no_rows = int(raw_input())

    if no_rows == 0:
        break

    grid = [[None for x in range(3)] for y in range(2)]

    input_arr = map(int, raw_input().split())

    grid[0][0] = 10000000
    grid[0][1] = input_arr[1]
    grid[0][2] = input_arr[1] + input_arr[2]

    r = 1
    for i in range(0, no_rows-1):
        input_arr = map(int, raw_input().split())
        _r = r ^ 1
        grid[r][0] = input_arr[0] + min(grid[_r][0], grid[_r][1])
        grid[r][1] = input_arr[1] + min(min(grid[_r][0], grid[r][0]), min(grid[_r][1], grid[_r][2]))
        grid[r][2] = input_arr[2] + min(min(grid[_r][1], grid[r][1]), grid[_r][2])


        r = _r

        print str(count) + ". " + str(grid[(no_rows -1) & 1][1])

        count += 1

以上代码超出时间限制。但是,当我更改行

grid[r][2] = input_arr[2] + min(min(grid[_r][1], grid[r][1]), grid[_r][2])

grid[r][2] = input_arr[2] + min(min(grid[_r][1], grid[_r][2]), grid[r][1])

接受解决方案。如果您发现差异,则第一行会比较grid[_r][1], grid[r][1]表示最小值(i.e. the row number are different),第二行比较grid[_r][1], grid[_r][2]表示最小值(i.e. the row number are same

这是一致的行为。我想了解,python是如何处理这两行的 - 这样就会导致超出时间限制,而其他则很好。

0 个答案:

没有答案