λ°±μ€_14225_λΆλΆμμ΄μ ν©
πλ¬Έμ : https://www.acmicpc.net/problem/14225
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
πμκ³ λ¦¬μ¦: λΈλ£¨νΈν¬μ€ - λΉνΈλ§μ€ν¬
πλΆλΆμμ΄ κ°λ ) λΆλΆ μμ΄μ μλ μμ΄μ μμλ₯Ό λ°κΏ μ μλ€.
μλ₯Ό λ€μ΄, μμ΄ S={1,2,5}μ λΆλΆμμ΄μ {},{1},{2},{5},{1,2},{1,5},{2,5},{1,2,5} μ΄λ€. ({5,2} λ±μ λΆλΆμμ΄μ΄ μλλ€!)
πλΆλΆμμ΄μ λ§λλ λ°©λ²)
1. μ¬κ· νΈμΆ
2. λΉνΈλ§μ€ν¬ (πμ΄λ²μλ λΉνΈλ§μ€ν¬λ‘ νμ΄λ³΄μλ€.)
πμμ΄λμ΄: ν΄λΉ μ«μκ° λΆλΆμμ΄μ ν©μΌλ‘ λμ¨μ μ΄ μμΌλ©΄ check λ°°μ΄μ trueλ₯Ό μ μ₯
πμ½λ:
#include <iostream>
#include <vector>
#define MAX (20*100000+1)
using namespace std;
bool check[MAX];
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int N;
cin >> N;
vector<int> s(N);
for (int i = 0; i < N; i++) {
cin >> s[i];
}
for (int i = 0; i < (1 << N); i++) {
int sum = 0;
for (int j = 0; j < N; j++) {
if ((i & (1 << j)) != 0) {
sum += s[N - 1 - j];
}
}
check[sum] = true;
}
for (int i = 1;; i++) {
if (check[i] == false) {
cout << i << '\n';
break;
}
}
return 0;
}