문제
N개의 정수로 이루어진 배열 A가 주어진다. 이때, 배열에 들어있는 정수의 순서를 적절히 바꿔서 다음 식의 최댓값을 구하는 프로그램을 작성하시오.
|A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|
입력
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
출력
첫째 줄에 배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값을 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include<stdio.h>
#include<stdbool.h>
#include<math.h>
#pragma warning(disable:4996)
#pragma warning(disable:6031)
int arr[9], nums[9];
bool check[9];
int n,temp, size = 0, ans = -0x7fffffff;
void go() {
if (size == n) {
temp = 0;
for (int i = 1; i <= n - 1; i++)
temp += abs(arr[i] - arr[i + 1]);
if (temp > ans)ans = temp;
return;
}
for (int i = 1; i <= n; i++) {
if (!check[i]) {
arr[++size] = nums[i];
check[i] = true;
go();
check[i] = false;
size--;
}
}
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &nums[i]);
go();
printf("%d\n", ans);
return 0;
}
|
cs |
n의 최댓값이 8이여서 그냥 재귀로 모든 경우를 탐색해서 풀었다.
'백준 온라인 저지 (BOJ) 문제풀이' 카테고리의 다른 글
백준 온라인 저지 (BOJ) 2548 대표 자연수 (0) | 2020.09.23 |
---|---|
백준 온라인 저지 (BOJ) 18422 Emacs (0) | 2020.09.23 |
백준 온라인 저지 (BOJ) 1764 듣보잡 (0) | 2020.09.23 |
백준 온라인 저지 (BOJ) 10773 제로 (0) | 2020.09.23 |
백준 온라인 저지 (BOJ) 1463 1로 만들기 (0) | 2020.09.22 |