반응형
https://www.acmicpc.net/problem/15658
연산자의 개수에 맞춰 모든 경우의 수를 구해준 뒤, 결과 값을 업데이트해주었습니다.
#include <iostream>
#include <algorithm>
using namespace std;
int n, a[11], b[4], m1 = -2e9, m2 = 2e9;
void f(int res, int c) {
if (c == n) {
m1 = max(res, m1);
m2 = min(res, m2);
return;
}
for (int i = 0; i < 4; i++) {
if (b[i] == 0) continue;
b[i]--;
if (i == 0) f(res + a[c], c + 1);
else if (i == 1) f(res - a[c], c + 1);
else if (i == 2) f(res * a[c], c + 1);
else f(res / a[c], c + 1);
b[i]++;
}
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
for (int i = 0; i < 4; i++) scanf("%d", &b[i]);
f(a[0], 1);
printf("%d\n%d", m1, m2);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1707 : 이분 그래프 (0) | 2021.11.11 |
---|---|
백준 11723 : 집합 (0) | 2021.11.11 |
백준 1182 : 부분수열의 합 (0) | 2021.11.11 |
백준 10971 : 외판원 순회 2 (0) | 2021.11.11 |
백준 10819 : 차이를 최대로 (0) | 2021.11.11 |