51nod 1268 和為K的組合

2022-08-19 08:27:10 字數 1489 閱讀 2760

給出n個正整數組成的陣列a,求能否從中選出若干個,使他們的和為k。如果可以,輸出:"yes",否則輸出"no"。

input

第1行:2個數n, k, n為陣列的長度, k為需要判斷的和(2 <= n <= 20,1 <= k <= 10^9)

第2 - n + 1行:每行1個數,對應陣列的元素a[i] (1 <= a[i] <= 10^6)

output

如果可以,輸出:"yes",否則輸出"no"。
input示例

5 1324

6810

output示例

no

/*

51nod 1268 和為k的組合

problem:

給你n個數,求能否從中選出若干個,使他們的和為k

solve:

總共只有20個數,所有考慮狀態壓縮解決.

hhh-2016/09/03-13:04:47

*/#pragma comment(linker,"/stack:124000000,124000000")

#include #include #include #include #include #include #include #include #include #include #define lson i<<1

#define rson i<<1|1

#define ll long long

#define clr(a,b) memset(a,b,sizeof(a))

#define scanfi(a) scanf("%d",&a)

#define scanfs(a) scanf("%s",a)

#define scanfl(a) scanf("%i64d",&a)

#define scanfd(a) scanf("%lf",&a)

#define key_val ch[ch[root][1]][0]

#define eps 1e-7

#define inf 0x3f3f3f3f3f3f3f3f

using namespace std;

const ll mod = 1e9+7;

const int maxn = 20010;

const double pi = acos(-1.0);

int a[maxn];

int dp[1<<20];

int vis[1<<20];

int flag;

int n,t;

void dfs(int state)

dfs(state | (1<}

}return;

}int main()

flag = 0;

dfs(0);

if(flag)

printf("yes\n");

else

printf("no\n");

}return 0;

}

51nod 1268 和為k的組合

1268 和為k的組合 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給出n個正整數組成的陣列a,求能否從中選出若干個,使他們的和為k。如果可以,輸出 yes 否則輸出 no input 第1行 2個數n,k,n為陣列的長度,k為需要判斷的和 2 n 20,1 ...

51nod 1268 和為k的組合

基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 收藏 關注 給出n個正整數組成的陣列a,求能否從中選出若干個,使他們的和為k。如果可以,輸出 yes 否則輸出 no input 第1行 2個數n,k,n為陣列的長度,k為需要判斷的和 2 n 20,1 k 10 9...

51nod 1268 和為K的組合

1268 和為k的組合 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給出n個正整數組成的陣列a,求能否從中選出若干個,使他們的和為k。如果可以,輸出 yes 否則輸出 no input 第1行 2個數n,k,n為陣列的長度,k為需要判斷的和 2 n 20,1 ...