dp演算法之有代價的最短路徑

2022-09-17 19:39:16 字數 1083 閱讀 9272

題目:有代價的最短路徑

題目介紹:如下圖所示,現在平面上有n個點,此時n=7,每個點可能和其他點相連,相連的線有一定權值,求出從0點到n-1點的消耗權值的最小值。

分析:用動態規劃的思路來解決,每一點與其他點的消耗權值的最小值都儲存在乙個二維陣列中,下乙個點消耗的最小值可以根據前乙個點來得出。如果兩個點不相連,可以認為這兩點的權值為無窮大。設乙個二維陣列初始化為無窮,再匯入權值初始值,再用狀態方程得出最小值儲存在陣列中。

狀態方程:l[k][j] = min(l[k][j], l[k][i] + l[i][j])

我們可以得出0到n-1的最短路徑**:距離0

1234

5600

2531

36**:

1 #include 2

using

namespace

std;

3int min(int a, int

b);4

intmain()514

for (i = 0; i < n; i++)

1520

}21 l[0][1] = l[1][0] = 2

;22 l[1][2] = l[2][1] = 3

;23 l[2][6] = l[6][2] = 4

;24 l[0][3] = l[3][0] = 3

;25 l[3][6] = l[6][3] = 3

;26 l[0][4] = l[4][0] = 1

;27 l[4][5] = l[5][4] = 2

;28 l[5][6] = l[6][5] = 3;29

for (k = 0; k < n; k++)

3037}38

}39for (i = 1; i < n; i++)

4043}44

int min(int a, int

b)45

50else

51 }

結果:

利用DP解決有代價的最短路徑

題目 無向圖g中有n個頂點,並通過一些邊相連線,邊的權值均為正數。初始時你身上有m元,當走過i點時,需要支付s i 元,如果支付不起表示不能通過。請找出頂點1到頂點n的最短路徑。如果不存在則返回乙個特殊值,如果存在多條則返回最廉價的一條。限制條件 1分析 這是網上的一種解法,我也不是很清楚狀態方程為...

最短路徑 DP

平面內給出 n 個點,記橫座標最小的點為 a,最大的點為 b,現在zxd想要知道在每個點經過一次 a 點兩次 的情況下從 a 走到 b,再回到 a 的最短路徑。但他是個強迫症患者,他有許多奇奇怪怪的要求與限制條件 1.從 a 走到 b 時,只能由橫座標小的點走到大的點。2.由 b 回到 a 時,只能...

攜程 最短路徑的代價

攜程的一道圖論題 題意 給出一張無向圖 每條邊有乙個長度和 刪除該邊的權值 再給出起點和終點 求從起點到終點的最短路增加 要刪除的邊的最小的權值和。思路 要使 從起點到終點的最短路長度增加 就要把該最短路破壞掉 從起點到終點的最短路可能不止一條,我們可以把 這些路徑都找出來 重新構成乙個圖 再求這個...