#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 理解最優子結構的問題。有一類問題的...