當前位置:
首頁 >
动态规划过程
發(fā)布時間:2023/12/10
41
豆豆
動態(tài)規(guī)劃過程
應(yīng)用背包問題:分享一下
有一個背包,容量是4磅,現(xiàn)有如下產(chǎn)品
1)要求達到的目標為裝入的背包的總價值最大,并且要求重量不能超出
2) 要求轉(zhuǎn)入的物品不能重復(fù)
思路分析:算法其實是模型建立的過程
- 分析 建模的過程:
- 橫向房物品的重量,從0~4磅
- 縱向是放的物品
第一層,只能放一個吉他
第二層,能放吉他和音響
第三層,吉他,音響和電腦 - 依據(jù)建模過程,進行背包填表如下圖:
- 設(shè)計 一個二維數(shù)組,i 為行數(shù)表示第幾行,j為列(表示裝入的重量)如上圖所示:設(shè)計第一行,和第一列為0 不放入任何東西;
- 聲明 w[i] ,val[i] 分別表示 第i個物品的重量和價值
w[i] 表示物品的重量 ,代碼映射 int [] w={1,3,4},int[] val[]={1500,3000,2000}; - int [][] v 變量存放 每個表格存放物品的最大價值
分析得出模型 - 構(gòu)建算法模型,注意考慮!臨界條件(邊界條件)
條件 :w[i]>j 時 v[i][j]= v[i-1][j]
w[j]<=j 時 v[i][j] =max(v[i-1],v[i]+v[i-1][j-w[i]])
算法的思想: 利用動態(tài)規(guī)劃來解決,每次遍歷第i個物品,根據(jù) w[i],v[i] 來決定是否放入到背包中。01問題(只能添加一次,要么有,要么沒有)
代碼后續(xù)補上;
在這里插入代碼片
下面展示一些 內(nèi)聯(lián)代碼片。
總結(jié)
- 上一篇: php 结构体_【开发规范】PHP编码开
- 下一篇: 值得关注的5款低代码平台推荐