蒜頭君的購物袋1

2021-09-28 17:18:43 字數 971 閱讀 1860

蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他買了 n 件物品,已知每件物品的體積 vi。蒜頭君想知道,挑選哪些物品放入購物袋中,可以使袋子剩餘的空間最小。

輸入格式

第一行輸入乙個整數 v(1≤v≤20,000),表示購物袋的容量。

第二行輸入乙個整數 n(01≤n≤30),表示蒜頭君購買的 n 件物品。

接下來輸入 n 行,每行輸入乙個整數 vi(1≤vi≤10,000),表示第 i 件物品的體積。

輸出格式

輸出一行,輸出乙個整數,表示購物袋最小的剩餘空間。

樣例輸入205

7573

7樣例輸出

1

貪心演算法

#include

using

namespace std;

int b[31]

;int

main()

5個樣例通過4組

測評用例 1:答案錯誤 [

2.000 毫秒,352 kb]

用例輸入:103

485用例正確輸出:

1你的輸出:

2

我的理解是動態規劃會在元素個數為1時將容量細分到最小並從小到大得出每一種情況的最優解,在每新增乙個元素時更新最優解,確保在當前情況下每乙個容量對應乙個最優解。由歸納法可知,當元素個數為1時一定為最優解。假設當元素個數為k時為最優解,那麼不難得出當元素個數為k+1時同樣為最優解。因此動態規劃的結果為最優解。

#include

using

namespace std;

int a[31]

[200001];

int b[31]

;int

main()

cout<[v];

return0;

}

蒜頭君的購物袋2

蒜頭君去超市購物,他有乙隻容量為 vv 的購物袋,同時他想買 nn 件物品,已知每件物品的體積 v ivi 和重要度 p ipi 蒜頭君想知道,挑選哪些物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。輸入格式 第一行輸入兩個整數 vv 1 leq v leq 10...

蒜頭君的購物袋3

蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他想買 n 種物品,已知每種物品的體積 vi和重要度 pi 蒜頭君想知道,怎麼挑選物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。注意超市中每種物品的數量無限多。輸入格式 第一行輸入兩個整數 n,v 1 n 1,...

計蒜客 蒜頭君的購物袋2

問題描述 蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他想買 n 件物品,已知每件物品的體積 vi和重要度 pi。蒜頭君想知道,挑選哪些物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。輸入格式 第一行輸入兩個整數 v 1 v 1000 和 n 1 n 10...