和為K的組合(01揹包)

2021-08-29 02:11:21 字數 724 閱讀 3962

給出n個正整數組成的陣列a,求能否從中選出若干個,使他們的和為k。如果可以,輸出:「yes」,否則輸出"no"。

input

第1行:2個數n, k, n為陣列的長度, k為需要判斷的和(2 <= n <= 20,1 <= k <= 10^9)

第2 - n + 1行:每行1個數,對應陣列的元素aii (1 <= aii <= 10^6)

output

如果可以,輸出:「yes」,否則輸出"no"。

sample input

5 1324

6810sample output

no以前也做過這種和為k的題目,以前記得用二分做的。然後這次也嘗試用二分做,但是這一次不是確定的幾個數字相加。這樣二分就做不了了。然後想了想,這不就是乙個簡單的01揹包嘛。k為揹包容量,給出的數字是體積。就是看看最後可不可以吧揹包填滿就好了啊。模板題。

**如下:

#include#include#include#include#include#define ll long long

#define inf 0x3f3f3f3f

using namespace std;

const int maxx=1e7+10;

ll a[100];

ll dp[maxx];

ll n,k;

int main()

} if(dp[k]==k) cout<<"yes"《努力加油a啊,(o)/~

01揹包(多個揹包的組合)

kkksc03的大學生活非常的頹廢,平時根本不學習。但是,臨近期末考試,他必須要開始抱佛腳,以求不掛科。這次期末考試,kkksc03需要考4科。因此要開始刷習題集,每科都有乙個習題集,分別有s1,s2,s3,s4道題目,完成每道題目需要一些時間,可能不等 a1.as1,b1.bs2,c1.cs3,d...

數字組合(01揹包)

小蒜有n 1 n 20 個正整數,找出其中和為t t 也是正整數 的可能的組合方式。如 n 5,5 個數分別為 1,2,3,4,5 t 5 那麼可能的組合有 5 1 4 5 1 4 和 5 2 3 和 5 5三種組合方式。輸入格式 輸入的第一行是兩個正整數 n 和 t,用空格隔開,其中1 n 20,...

數字組合(01揹包)

就是01揹包小小變形一下就不太會做了。思路 當前和的方案數等於當前和減當前和當去當前正數的方案數,如 當前正數為2,和為5的方案數就等於3 5 2 的方案數,和為3的方案數又等於1 3 2 的方案數。又因為在每一種方案中每個數字只能使用一次,所以採用01揹包。狀態轉移方程式 dp j dp j w ...