Algorithm/문제풀이
[Brute Force - 비트마스크] 부분수열의 합
lee308812
2019. 10. 3. 20:30
예제 입력 1
3
5 1 2
예제 출력 1
4
예제 입력 2
3
2 1 4
예제 출력 2
8
예제 입력 3
4
2 1 2 7
예제 출력 3
6
https://www.acmicpc.net/problem/14225
#include <stdio.h>
#define MAX_SIZE (21)
#define MAX_NUMBER (20*100000+1)
int N;
int numbers[MAX_SIZE];
bool canMake[MAX_NUMBER];
int main(void)
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &numbers[i]);
}
for (int i = 0; i < (1 << N); i++)
{
int sum = 0;
for (int j = 0; j < N; j++)
{
if(i & (1 << j))
{
sum += numbers[j];
}
}
canMake[sum] = true;
}
for (int i = 1; i <= MAX_NUMBER; i++)
{
if (!canMake[i])
{
printf("%d\n", i);
break;
}
}
return 0;
}