題目內容:
給出n個正整數組成的陣列a,求能否從中選出若干個,使他們的和為k。如果可以,輸出:「yes」,否則輸出"no"。
輸入格式:
第1行:2個數n、k, n為陣列的長度, k為需要判斷的和(2 ≤n ≤ 20,1 ≤ k ≤ 10^9)
第2 到第 n + 1行:每行1個數,對應陣列的元素a[i] (1 ≤ a[i]≤ 10^6)
輸出格式:
如果可以,輸出:「yes」,否則輸出"no"。
樣例輸入
4 1312
47樣例輸出
yes輸入樣例:
5 9123
45輸出樣例:
yes
#include
using
namespace std;
#define max 20
//陣列長度
int len;
//所要求的和
int sumk;
//陣列
int a[max]
;bool
backsearch
(int i,
int sum)
bool fla =
backsearch
(i+1
,sum);if
(fla)
fla =
backsearch
(i+1
, sum+a[i]);
if(fla)
return
false;}
void
solve()
else
}int
main()
solve()
;system
("pause");
return0;
}
nyoj ACM 部分和問題 DFS 回溯 遞迴
部分和問題 時間限制 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 並按輸入順序依次...