演算法設計與分析之動態規劃

2021-10-01 22:28:51 字數 1214 閱讀 2523

#include

void

main()

system

("pause");

}

用陣列實現斐波那契函式:

#include

#include

intmain()

;int i=0;

for(i=

2;i<

20;i++

)for

(i=0

;i<

20;i++

)system

("pause");

return0;

}

遞迴實現斐波那契函式

#include

intfib

(int n)

return0;

}int

main()

遞迴呼叫fib(n)採用自頂向下的執行過程

存在大量的重複計算,例如求fib(5)的過程,存在兩次重複計算fib(3)值的情況:

//前i個物品裝入容量為j的揹包中獲得的最大價值

intmax

(int a,

int b)

intknapsack

(int n,

int w,

int v,

int x,

int c)

else

}printf

("\n");

}//判斷哪些物品被選中

j=c;

for(i=n;i>=

1;i--

)else

x[i]=0

;}printf

("選中的物品是:\n");

for(i=

1;i<=n;i++

)printf

("%d "

,x[i]);

printf

("\n");

return v[n]

[c];

}void

main()

演算法設計與分析 動態規劃

最大子段和問題 給定由n個整數 包含負整數 組成的序列a1,a2,an,求該序列子段和的最大值。i.當所有整數均為負值時定義其最大子段和為0。所求的最優值為 i.例如,當 a1,a2,a7,a8 1,3,7,8,4,12,10,6 時,最大子段和為 bj是1到j位置的最大子段和 由bj的定義易知,當...

演算法設計與分析 動態規劃

分治技術的問題 子問題是相互獨立的 如果子問題不是相互獨立的,分治演算法將重複計算公共子空間,效率很低 提高效率的方法 從規模最小的子問題開始計算 用恰當資料結構儲存子問題的解,供以後查詢 確保每個子問題只求解一次 優化問題 給定一組約束條件和乙個代價函式,在解空間中搜尋具有最小或最大代價的優化解 ...

演算法分析與設計實驗 二 之動態規劃

1 能用程式語言實現求解相關問題的演算法 2 深刻掌握動態規劃法的設計思想並能熟練運用 3 理解這樣乙個觀點 同樣的問題可以用不同的方法解決,乙個好的演算法是反覆努力和重新修正的結果。1 用動態規劃法求解問題 2 分析演算法的時間效能,設計實驗程式驗證分析結論。1 理解最優子結構的問題。有一類問題的...