首页 > 百度9-3号笔试代码题
头像
Lwming95
编辑于 2020-09-05 11:30
+ 关注

百度9-3号笔试代码题

grid = [[1,2,2],
        [4,5,2],
        [7,8,2]]

n = len(grid)
table = {}

for i in range(n):
    for j in range(n):
        if (i,j) not in table:
            table[(i,j)] = []

        if 0 <= i+1 < n:
            table[(i,j)].append([(i+1,j),abs(grid[i+1][j] - grid[i][j])])
        if 0 <= i-1 < n:
            table[(i,j)].append([(i-1,j),abs(grid[i-1][j] - grid[i][j])])
        if 0 <= j+1 < n:
            table[(i,j)].append([(i,j+1),abs(grid[i][j+1] - grid[i][j])])
        if 0 <= j-1 < n:
            table[(i,j)].append([(i,j-1),abs(grid[i][j-1] - grid[i][j])])

visited = [[0 for _ in range(n)] for _ in range(n)]

dist = [[999 for _ in range(n)] for _ in range(n)]

dist[0][0] = 0

for _ in range(n*n):
    my_min = 1000
    pivot = (0,0)

    for i in range(n):
        for j in range(n):
            if visited[i][j] == 0:
                if dist[i][j] < my_min:
                    my_min = dist[i][j]
                    pivot = (i,j)

    idx,idy = pivot
    visited[idx][idy] = 1
    path = table[pivot]

    for m in range(len(path)):
        next_ptx,next_pty = path[m][0]
        next_dis = path[m][1]
        dist[next_ptx][next_pty] = min(dist[next_ptx][next_pty],dist[idx][idy] + next_dis)

print(dist)

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐