반응형
14225번: 부분수열의 합
수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들
www.acmicpc.net
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <iostream> #include <algorithm> #define ll long long #define rep(i,n) for(int i=0;i<n;i++) using namespace std; int n, arr[21]; bool visited[2000001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; rep(i, n) cin >> arr[i]; sort(arr, arr + n); int mask = 0; while (mask < (1 << n)) { int temp = 0; rep(i,n) { int x = (mask >> i) & 1; // 비트마스크 이용 temp += x * arr[i]; // 모든 조합 찾아봄 } visited[temp] = 1; // 만들어진 숫자 체크 mask++; } rep(i, 2000001) { if (!visited[i]) { // 체크되지 않은 첫 번째 숫자 출력 cout << i; break; } } } | cs |
반응형
'백준 > 브루트포스' 카테고리의 다른 글
백준 1208 [복습 필수] (0) | 2021.03.06 |
---|---|
백준 14391 (0) | 2021.02.15 |
백준 1182 (0) | 2021.02.15 |
백준 6064 (0) | 2021.02.13 |
백준 1107 [복습 필수] (0) | 2021.02.13 |