def minPathValue(m):if m == None or len(m) == 0 or len(m[0]) == 0 or m[0][0]!=1 or m[-1][-1]!=1:return #map_表示從(0,0)到每個點的距離map_ = [[0 for i in range(len(m[0]))] for i in range(len(m))]rQ = []cQ = []rQ.append(0)cQ.append(0)map_[0][0] = 0while len(rQ)!=0:row = rQ.pop(0)col = cQ.pop(0)if row == len(m)-1 and col == len(m[0])-1:return map_[row][col]pre = map_[row][col]walkTo(m,map_,row-1,col,rQ,cQ,pre)walkTo(m,map_,row+1,col,rQ,cQ,pre)walkTo(m,map_,row,col-1,rQ,cQ,pre)walkTo(m,map_,row,col+1,rQ,cQ,pre)return 0def walkTo(m,map_,row,col,rQ,cQ,pre):if row < 0 or row == len(m) or col < 0 or col == len(m[0]) or m[row][col]!=1 or map_[row][col]!=0:returnmap_[row][col] = pre + 1rQ.append(row)cQ.append(col)m = [[1,0,1,1,1],[1,0,1,0,1],[1,1,1,0,1],[0,0,0,0,1]]
minPathValue(m)