問題描述
有乙個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...