-
[백준][14889번] 스타트와 링크Algorithm/백준 2020. 4. 23. 23:01
https://www.acmicpc.net/problem/14889
14889번: 스타트와 링크
예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다.
www.acmicpc.net
풀이과정
1. 완전탐색을 이용했다.
2. 팀을 나눈 후 각 점수를 더해 최솟값이 되는 점수를 구하면 된다.
소스코드
더보기#include <stdio.h> #include <stdlib.h> int map[20][20]; int user[20]; int N; int answer = 0x7fffffff; void solution(int cur, int count) { if (count == N/2) { int result = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (i == j) continue; if (user[i] == user[j]) { result = (user[i] == 0) ? result + map[i][j] : result - map[i][j]; } } } result = abs(result); if (answer > result) { answer = result; } return; } for (int i = cur; i < N; i++) { if (user[i] == 0) { user[i] = 1; solution(i + 1, count + 1); user[i] = 0; } } } int main() { scanf("%d", &N); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { scanf("%d", &map[i][j]); } } solution(0, 0); printf("%d\n", answer); }
결과
'Algorithm > 백준' 카테고리의 다른 글
[백준][14891번] 톱니바퀴 (0) 2020.04.26 [백준][14890번] 경사로 (0) 2020.04.25 [백준][14503번] 로봇 청소기 (0) 2020.04.23 [백준][14888번] 연산자 끼워넣기 (0) 2020.04.23 [백준][14501번] 퇴사 (0) 2020.04.22