藍橋杯 ALGO-108 最大體積 dp
阿新 • • 發佈:2020-10-05
/* 演算法訓練 最大體積 資源限制 時間限制:1.0s 記憶體限制:256.0MB 問題描述 每個物品有一定的體積(廢話),不同的物品組合,裝入揹包會戰用一定的總體積。假如每個物品有無限件可用,那麼有些體積是永遠也裝不出來的。為了儘量裝滿揹包,附中的OIER想要研究一下物品不能裝出的最大體積。題目保證有解,如果是有限解,保證不超過2,000,000,000 如果是無限解,則輸出0 輸入格式 第一行一個整數n(n<=10),表示物品的件數 第2行到N+1行: 每件物品的體積(1<= <=500) 輸出格式 一個整數ans,表示不能用這些物品得到的最大體積。 樣例輸入 3 3 6 10 樣例輸出 17 */ #include<iostream> #include<cstring> using namespace std; #define MAX 1000010 bool dp[MAX]; int good[510]; int main() { int ans = 0; int n; cin >> n; memset(dp, false, sizeof dp); dp[0] = true; for(int i = 1; i <= n; i++) cin >> good[i]; for(int i = 1; i <= MAX; i++) { for(int j = 1; j <= n; j++) { if(i >= good[j]) { if(dp[i-good[j]]) { dp[i] = true; break; } } } if(!dp[i]) ans = i; } cout << ans; system("pause"); return 0; }