簡單的0,1揹包問題,好吧我還是不會。
value[i][j]表示時間總長為j時,挖前i個草藥得到的最大值。遞推關係就是:
value[i][j]=max(value[i-1][j-caoyao[i].t]+caoyao[i].v,value[i-1][j])
分為選擇猜i草藥,和不採兩種情況,取最大值即可。
以下。
for(i=1;i<=n;i++)
這裡重點提一下將二維陣列換算成一維的情況。
每次value[i]~的值僅和value[i-1]~的值有關,我們可以用a[i]陣列代替value陣列,
a[j]=max(a[j-caoyao[i].t]+caoyao[i].v,a[j]),
且要保證替換a[j](即value[i][j])時,a[j-caoyao[i].t]和a[j]不變,(還保持著value[i-1][j-caoyao[i].t]和value[i-1][j]不變)。
因此合理需要倒敘賦值、
for(i=1;i<=n;i++)
}
j
value[i][j]=value[i-1][j];
附上最後乙個重要的點:
01揹包是每一件物品至多只能選擇一件,即在揹包中該物品數量只有0,1兩種。
九度oj 1123 採藥
題目1123 採藥 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 2399 解決 1168 題目描述 辰辰是個很有潛能 天資聰穎的孩子,他的夢想是稱為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到個到處都是草藥的山洞裡對他說...
九度OJ 題目1123 採藥
一.題目描述 辰辰是個很有潛能 天資聰穎的孩子,他的夢想是稱為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,...
九度oj題目1123 採藥
題目描述 辰辰是個很有潛能 天資聰穎的孩子,他的夢想是稱為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這...