반응형
https://www.acmicpc.net/problem/10819
가능한 순서를 만들어내서 연산의 최댓값을 구해줬습니다.
#include <iostream>
#include <algorithm>
#include <cmath>
int n, a[8], b[8], c[8], v[8] = { 0 }, ans = -1;
void cal() {
int s = 0;
for (int i = 0; i < n-1; i++) s += abs(c[b[i]] - c[b[i + 1]]);
ans = std::max(s, ans);
}
void fun(int cnt) {
if (cnt == n) {
cal();
return;
}
for (int i = 0; i < n; i++) {
if (v[i]) continue;
v[i] = 1;
b[cnt] = a[i];
fun(cnt + 1);
v[i] = 0;
}
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) a[i] = i;
for (int i = 0; i < n; i++) scanf("%d", &c[i]);
fun(0);
printf("%d", ans);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1182 : 부분수열의 합 (0) | 2021.11.11 |
---|---|
백준 10971 : 외판원 순회 2 (0) | 2021.11.11 |
백준 10974 : 모든 순열 (0) | 2021.11.11 |
백준 10972 : 다음 순열 (0) | 2021.11.11 |
백준 1476 : 날짜 계산 (0) | 2021.11.11 |