DP 揹包問題

2021-09-26 11:49:18 字數 954 閱讀 4787

小明同學在參加一場考試,考試時間2個小時。試卷上一共有n道題目,小明要在規定時間內,完成一定數量的題目。  考試中不限制試題作答順序,對於 i 第道題目,小明有三種不同的策略可以選擇:  (1)直接跳過這道題目,不花費時間,本題得0分。

(2)只做一部分題目,花費pi分鐘的時間,本題可以得到ai分。  (3)做完整個題目,花費qi分鐘的時間,本題可以得到bi分。 

小明想知道,他最多能得到多少分。

輸入描述:

第一行輸入乙個n數表示題目的數量。

接下來n行,每行四個數p_i,a_i,q_i,b_i。(1≤n≤100,1≤p_i≤q_i≤120,0≤a_i≤b_i≤1000

)。

輸出描述:

輸出乙個數,小明的最高得分。
輸入例子1:

4

20 20 100 60

50 30 80 55

100 60 110 88

5 3 10 6

輸出例子1:

94
#include#includeusing namespace std;

int max(const int a,const int b,const int c)

else if(b > a && b > c)

else

}int main()

}for(int i = 1;i <= n;i ++)

else if(vec[i - 1][0] <= j && j < vec[i - 1][2])

else}}

int result = dp[n][120];

printf("%d\n",result);

return 0;

}

DP 揹包問題

大牛 以下使用滾到陣列 若輸入要求一般,可以邊定義狀態邊輸入,不需儲存 memset f,0,sizeof int n 若求最小值,除 f 0 其餘初始化為 inf,f 0 0是必須的 求最大最小都一樣 確保有從無到有的起點 0 1揹包 一般形式 f i v max f i 1 v f i 1 v ...

揹包問題 DP

01揹包 現在有1個體積為mmax的揹包和n種物品 每種物品只有1個 每種物品的體積和價值分別是v i 和w i 求這個揹包最多可以裝價值多少的物品。這是最基礎的揹包問題,特點是 每種物品僅有一件,可以選擇放或不放。用子問題定義狀態 設f i j 表示前i件物品恰放入乙個容量為j的揹包可以獲得的最大...

dp 揹包問題

乙個揹包總容量為v,現在有n個物品,第i個物品容量為weight i 價值為value i 現在往揹包裡面裝東西,怎樣裝才能使揹包內物品總價值最大.主要分為3類 總體的,又分為揹包剛好裝滿,與揹包沒有裝滿兩種情況 每種物品都只有1個,只有選擇與不選擇兩種狀態 有n件物品和乙個容量為v的揹包,每種物品...