計蒜客 蒜頭君的購物袋1 01揹包問題

2021-08-14 15:08:30 字數 798 閱讀 1053

蒜頭君去超市購物,他有乙隻容量為 vv

v 的購物袋,同時他買了 nn

n 件物品,已知每件物品的體積 viv_ivi

​。蒜頭君想知道,挑選哪些物品放入購物袋中,可以使袋子剩餘的空間最小。

第一行輸入乙個整數 vv

v(1≤v≤20,0001 v \leq 20,0001≤

v≤20

,000

),表示購物袋的容量。

第二行輸入乙個整數 nn

n(1≤n≤301 \leq n \leq 301≤

n≤30

),表示蒜頭君購買的 nn

n 件物品。

接下來輸入 nn

n 行,每行輸入乙個整數 viv_ivi

​(1≤vi≤10,0001 \leq v_i \leq 10,0001≤

vi​≤

10,0

00),表示第 ii

i 件物品的體積。

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

樣例輸入

2057

5737

樣例輸出
1
典型的01揹包問題
#include #include #include int main(int argc, char *argv) 

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

}} printf("%d",v-max2);

return 0;

}int max (int a,int b)

else

}

計蒜客 蒜頭君的購物袋2

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

計蒜客 蒜頭君的購物袋3

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

蒜頭君的購物袋3 (完全揹包)

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