๋ฐ์ํ
https://www.acmicpc.net/problem/1182
๋ฌธ์
N๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์์ ๋, ํฌ๊ธฐ๊ฐ ์์์ธ ๋ถ๋ถ์์ด ์ค์์ ๊ทธ ์์ด์ ์์๋ฅผ ๋ค ๋ํ ๊ฐ์ด S๊ฐ ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ N๊ณผ ์ ์ S๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) ๋์งธ ์ค์ N๊ฐ์ ์ ์๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์์ ์ ๋๊ฐ์ 100,000์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ํฉ์ด S๊ฐ ๋๋ ๋ถ๋ถ์์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int n, s, ans;
vector<int> v;
vector<bool> used;
void recur(int sum, int index) {
if(index==n) {
if(sum==s)
ans++;
return;
}
recur(sum, index+1);
recur(sum+v[index], index+1);
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin >> n >> s;
v.assign(n, 0);
used.assign(n, false);
for(int i=0; i<n; i++)
cin >> v[i];
recur(0, 0);
if(s==0)
ans--;
cout << ans;
return 0;
}
/*
*/
๋ง์ฝ 58%์์ ํ๋ ธ์ต๋๋ค ๊ฐ ๋ฌ๋ค๋ฉด
s๊ฐ 0์ธ ๊ฒฝ์ฐ ๊ณต์งํฉ๋ ์นด์ดํธํ๊ฑด ์๋์ง ์ฒดํฌํด๋ณด์
๋ฐ์ํ
'๐ Baaaaaarking > 0x0C๊ฐ - ๋ฐฑํธ๋ํน' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ S3][C++] ๋ฐฑ์ค 15654๋ฒ : N๊ณผ M (5) (0) | 2022.07.12 |
---|---|
[BOJ S3][C++] ๋ฐฑ์ค 15652๋ฒ : N๊ณผ M (4) (0) | 2022.07.12 |
[BOJ S3][C++] ๋ฐฑ์ค 15651๋ฒ : N๊ณผ M (3) (0) | 2022.07.09 |
[BOJ G4][C++] ๋ฐฑ์ค 9663๋ฒ: N-Queen (0) | 2022.07.06 |
[BOJ S3][C++] ๋ฐฑ์ค 15649๋ฒ: N๊ณผ M (1) (0) | 2022.07.05 |