//給定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,
intsum)
//跳過第
i個數,不取 if
(dfs
(i +
1, sum)) //
取第i個數
if(dfs(i +
1, sum +
a[i])) //
取不取第
i個數都湊不成
k時,返回
false
return
false;
} intmain()
cin>>k;
if(dfs(0
,0)) cout
<<
"yes"
<<
endl;
else
cout
<<
"no"
<<
endl;
//只給出一種符合的可能
while(!p
.empty
())
return0;
}
部分和問題
時間限制 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 並按輸入順序依次...
部分和問題
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 給定整數a1 a2 an,判斷是否可以從中選出若干數,使它們的和恰好為k。輸入 首先,n和k,n表示數的個數,k表示數的和。接著一行n個數。1 n 20,保證不超int範圍 輸出如果和恰好可以為k,輸出 yes 並按輸入順序依次...