–參考
##最少硬幣
--d(i)=min
dp = {}
local min = 11
for i = 0,min do
dp[i] = i
end
a =
for i = 1,min do
for j = 1,3 do
if i >= a[j] and dp[i - a[j]] + 1 < dp[i] then
dp[i] = dp[i- a[j] ] + 1
endend
end
for i = 1,min do
--print(dp[i])
end
##倒三角
--f[i][j] = max(f[i+1][j], f[i+1][j+1]) + map[i][j]
map = ,,,
,,}f = ,,,
,,}--自底向上
for i = #map - 1,1,-1 do
for j = 1,i do
f[i][j] = math.max(f[i+1][j],f[i+1][j+1]) + map[i][j]
endendprint(f[1][1])
##01揹包
--用乙個陣列f[i][j]表示,在只有i個物品,容量為j
--f[i+1][j] = max(f[i][j],f[i][j-weight[i+1]+value[i+1])
namearr = ;
weightarr = ;
valuearr = ;
total = 10
--初始化主要初始容量為0和物品為0時的情況
f = {}
for i = 0 ,# namearr do
f[i] = {}
for j = 0 ,total do
f[i][j] = 0
endend
for i = 1,# namearr do
for j = 1 ,total do
if weightarr[i] > j then
--裝不下
f[i][j] = f[i-1][j]
else
--裝下時
f[i][j] = math.max( f[i-1][j - weightarr[i]] + valuearr[i],f[i-1][j])
end
endend
動態規劃python實現
考慮乙個場景 當你有去沙漠旅行,你有乙個揹包和一些物品,揹包有最大承受重量,物品也有重量和價值,而物品種類很多,不可能全都裝在揹包裡,如何去選取價值總量最高的物品組合呢?物品名價值 water 10book 3food 9jacket 5camera 6物品名 重量water 3kgbook 1kg...
TSP問題 動態規劃實現
貨郎擔問題 tsp 有n個城市,兩兩之間均有路直接連線,求一條經過每個城市一次且僅一次,最後返回起點的最短路線。這是劉汝佳書上的一道題,他給出了思路,我實現了一下。用動態規劃解決,可以假設從0點出發,然後回到0點。那麼用 f i,s 表示現在處在i點,要去訪問剩餘的在集合s中的點,集合s可以用二進位...
打家劫舍 動態規劃(java實現)
打家劫舍 你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1...