部分和問題

2021-10-05 02:34:11 字數 906 閱讀 1181

問題描述

有乙個a1……an的序列,判斷能否從該序列中選出若干個元素使其和等於k。

輸入描述:

第一行輸入乙個n,表示有n個元素。

第二行輸入n個整數。

第三行輸入乙個k。

-20<=n<=20.

輸出描述:

如果滿足條件輸出yes,否則輸出no。

解法一:

二進位製非空子集生成+判斷。

**實現:

#include

#include

using

namespace std;

int a[20]

;int

main()

}}} cout<<

"no"

;return0;

}

解法二:

遞迴+判斷。

**實現:

#include

using

namespace std;

int a[20]

;int n,k;

bool flag=

true

;voidf(

int k,

int index)

//k表示還差k,index表示陣列的角標

if(flag)

}int

main()

總結:

我認為解法一是該題的最優解,解法二最後乙個元素容易考慮不周而導致功敗垂成。

部分和問題

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 給定整數a1 a2 an,判斷是否可以從中選出若干數,使它們的和恰好為k。輸入 首先,n和k,n表示數的個數,k表示數的和。接著一行n個數。1 n 20,保證不超int範圍 輸出如果和恰好可以為k,輸出 yes 並按輸入順序依次...

部分和問題

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 給定整數a1 a2 an,判斷是否可以從中選出若干數,使它們的和恰好為k。輸入 首先,n和k,n表示數的個數,k表示數的和。接著一行n個數。1 n 20,保證不超int範圍 輸出如果和恰好可以為k,輸出 yes 並按輸入順序依次...

部分和問題

給定n 個整數ai 求是否可選出若干個數,使它們的和恰好為k n 20 example 1 n 4 a k 13 include include using namespace std intn,k,a 22 suit 22 num 0 stack int p bool dfs inti,intsu...