部分和問題

2021-07-27 10:51:55 字數 856 閱讀 4601

//給定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 並按輸入順序依次...