題目:有代價的最短路徑
題目介紹:如下圖所示,現在平面上有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 時,只能...
攜程 最短路徑的代價
攜程的一道圖論題 題意 給出一張無向圖 每條邊有乙個長度和 刪除該邊的權值 再給出起點和終點 求從起點到終點的最短路增加 要刪除的邊的最小的權值和。思路 要使 從起點到終點的最短路長度增加 就要把該最短路破壞掉 從起點到終點的最短路可能不止一條,我們可以把 這些路徑都找出來 重新構成乙個圖 再求這個...