C++)
#include <iostream>
#include <algorithm>
#define MAX_NUM 22
using namespace std;
int n;
int s;
int ans;
int arr[MAX_NUM];
bool visited[MAX_NUM];
void suyeol(int cnt, int sum, int start) {
if (cnt > 0 && sum == s)
ans++;
for (int i = start; i < n; i++) {
if (!visited[i]) {
visited[i] = true;
suyeol(cnt + 1, sum + arr[i], i+1);
visited[i] = false;
}
}
}
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> s;
for (int i = 0; i < n; i++)
cin >> arr[i];
suyeol(0, 0, 0);
cout << ans;
return 0;
}
Python)
import sys
read = sys.stdin.readline
n, s = map(int, read().rstrip().split())
arr = list(map(int, read().rstrip().split()))
visited = [False] * n
ans = 0
def suyeol(cnt, sum, cur):
global ans
if cnt > 0 and sum == s:
ans += 1
for i in range(cur, n):
if not visited[i]:
visited[i] = True
suyeol(cnt+1, sum + arr[i], i+1)
visited[i] = False
suyeol(0, 0, 0)
print(ans)'백준 2 > 완전탐색' 카테고리의 다른 글
| [백준 10971] 외판원 순회2 (0) | 2020.12.07 |
|---|---|
| [백준 2309] 일곱 난쟁이 (C++/Python) (0) | 2020.12.07 |
| [백준 10819] 차이를 최대로 (0) | 2020.12.07 |
| [백준 10974] 모든 순열 (0) | 2020.12.07 |
| [백준 17141] 연구소 2 (0) | 2020.12.07 |