반응형

https://www.acmicpc.net/problem/10819

 

10819번: 차이를 최대로

첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.

www.acmicpc.net

 

가능한 순서를 만들어내서 연산의 최댓값을 구해줬습니다.

#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

+ Recent posts