Notice
Recent Posts
Recent Comments
Link
개발자-H 입니다.
BOJ - 차이를 최대로 본문
https://www.acmicpc.net/problem/10819
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
- 백트랙킹을 이용하여 수어진 배열의 모든 가지수를 구한다.
- 주어진 수식으로 답을 구한 뒤 답중 최대 값을 출력한다.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
private static int maxSum = Integer.MIN_VALUE;
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
boolean[] visit = new boolean[N];
int[] order = new int[N];
dp(0, N, arr, visit, order);
System.out.println(maxSum);
}
private static void dp(int depth, int n, int[] arr, boolean[] visit, int[] order) {
if (depth == arr.length) {
int sum = 0;
for (int i = 0; i < order.length - 1; i++) {
sum += Math.abs(order[i] - order[i + 1]);
}
maxSum = Math.max(sum, maxSum);
return;
}
for (int i = 0; i < arr.length; i++) {
if (visit[i]) continue;
order[depth] = arr[i];
visit[i] = true;
dp(depth + 1, n, arr, visit, order);
visit[i] = false;
}
}
}
'Algorithm > 문제 풀이' 카테고리의 다른 글
BOJ(10597) - 순열장난 (JAVA) (0) | 2021.09.26 |
---|---|
BOJ - 모든 순열 (0) | 2021.09.25 |
BOJ - 좋은 수열 (0) | 2021.09.23 |
BOJ - 선발 명단 (0) | 2021.09.23 |
BOJ - 암호 만들기 (0) | 2021.09.22 |
Comments