用動態規劃演算法求解最短路線問題

2021-08-30 05:52:43 字數 633 閱讀 7959

問題如下:設有乙個旅行者從a點出發,途中要經過b,c,d等處,最後到達e,從a到e有很多條路線可走,各個點的距離如下,問旅行者應該選擇哪一條,是使a到e路線最短。

求解演算法:

public class dp

public void setmatrix(int matrix)

/**任意兩點之間的距離,前提是pointa= pointa ;i--){//從最後pointb行開始,遞減直到pointa

for(int j = i+1;j <= pointb;j++){//歷遍(i,i)->(i,pointb),找到(i,pointb)的最小距離

if( matrix[i][j] != 10000){

int value =0;

if( j+1<= pointb) value = distance[j];

int mindistance = matrix[i][j] +value;//最小路徑為(i,j)的距離加(j,point)的距離

if(mindistance 分析:

1、找出狀態轉移公式;i 到 j 的最短距離等 (i,i+1)的距離 加上 (i+1,j)的最短距離

2、儲存每個點到 j 的最短距離的變數 distance

動態規劃(演算法 理論) 最短路徑

首先介紹動態規劃的概念 問題是由交疊的自問題構成的,是對給定問題求解的遞推關係中的相同型別的 更小子問題的解 dp 回溯 從頂至下,避免計算不需要計算的小解 記憶 求解最優化問題可以用動態規劃 動態規劃下筆寫 前先去頂遞推式 直接看例項 一 幣值最大化問題 給定一排n個硬幣,其面值均為正整數c1,c...

動態規劃演算法求解上梯子問題

今天開始學習有關動態規劃的知識.先從這道題開始吧 有11個階梯,可以上一次上乙個,也可以一次上兩個,有幾種方法可以上完?演算法一 這是本作者自己想出來的演算法,很簡單,就是利用遞推的思想吧 include using namespace std int main int argc,char argv...

動態規劃演算法求解硬幣找零問題

1.問題描述 現存在一堆面值為 v1 v2 v3 個單位的硬幣,問最少需要多少個硬幣才能找出總值為 t 個單位的零錢?假設這一堆面值分別為 1 2 5 21 25 元,需要找出總值 t 為 63 元的零錢。2.分析 動態規劃的基本思想是將待求解問題分解成若干個子問題,先求解子問題,並將這些子問題的解...