題目描述:
求從左上角到右下角的權重和最小的路徑,可以向上、下、左、右四個方向行走
思路:動態規劃:先根據上、下、左、右四個位置計算走到該單元格的最短距離;然後根據得到的單元和最短距離更新上、下、左、右四個位置的最短距離;
m,n=5,3
arr=[[1,1,1],[5,1,1],[1,1,1],[1,5,7],[1,1,1]]
weight=[[float("inf")]*n for _ in range(m)]
for i in range(m):
for j in range(n):
if i==0 and j==0:
weight[i][j]=arr[i][j]
else:
cur_min=float("inf")
if i-1>=0:
cur_min=min(cur_min,weight[i-1][j])
if i+1=0:
cur_min = min(cur_min, weight[i ][j-1])
if j+1=0:
weight[i - 1][j]=min(weight[i][j]+arr[i-1][j],weight[i-1][j])
if i+1=0:
weight[i ][j-1] = min(weight[i][j] + arr[i ][j-1], weight[i ][j-1])
if j+1weight[i][j + 1] = min(weight[i][j] + arr[i][j + 1], weight[i][j + 1])
print(weight)
矩陣求最短路徑
題目 給定乙個m n的矩陣,定義一條路徑為 從矩陣左上頂點數字出發到達右下數字,每一次只可以從乙個數字出發向右移動一步或向下移動一步,定義路徑和為 路徑經過的數字的和。要求編寫乙個程式,找到路徑和最小的那條路徑,並給出最小路徑和。給定如圖所示矩陣 一條路徑為2 0 3 6 9 5,路徑和為25 2 ...
最短路徑 鄰接矩陣
思路 先記錄1到所有點的距離 沒有連線記為無窮大 為到達該點的最短路徑長,然後從1開始利用貪心思想依次找出到下乙個連線點的最短距離,然後再找以該點為基準的下乙個距離最近的點,判斷從1先到乙個點再到該點的距離與從1直接到該點距離的大小,若小,則更新dis距離長,否則不更新 若不理解,建議看看簡單易懂 ...
Codeup最短路徑 最短路徑
n個城市,標號從0到n 1,m條道路,第k條道路 k從0開始 的長度為2 k,求編號為0的城市到其他城市的最短距離。第一行兩個正整數n 2 n 100 m m 500 表示有n個城市,m條道路,接下來m行兩個整數,表示相連的兩個城市的編號。n 1行,表示0號城市到其他城市的最短路,如果無法到達,輸出...