#C08L04P02. C08.L04.位运算与二进制枚举.程序填空.二进制枚举

C08.L04.位运算与二进制枚举.程序填空.二进制枚举

题目描述

给出长度为 N 的数组,求能否从中选出若干个,使他们的和为 K。如果可以,,输出 Yes,否则输出 No。

输入格式

第 1 行,输入 N,K,为数组的长度和需要判断的和( 2 ≤ N ≤ 20,1 ≤ K ≤ 109{10}^9

第 2 行,N 个值,表示数组中元素的值( 1 ≤ aia_i106{10}^6

输出格式

输出 Yes 或 No。

样例

5 13
2 4 6 8 10
No
#include <bits/stdc++.h>
using namespace std;
int a[25],n,k,sum,t;
int main()
{
	cin>>n>>k;
	int i,j;
	for(i=0;i<n;i++)
		cin>>a[i];
	
	for(t=1;t< 填空(1) ;t++)
	{
		填空(2) ;
		for(j=0;j<n;j++)
			if( 填空(3)  &t)
				sum += 填空(4) ;
		
		if(sum==k)
		{
			printf("Yes") ;
			return 0;
		}
	}
	printf("No");
    return 0;
}

填空(1): {{ input(1) }}

填空(2): {{ input(2) }}

填空(3): {{ input(3) }}

填空(4): {{ input(4) }}