반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 클라우드
- centOS
- 데브옵스
- 부스트코스
- C++
- Python
- os
- 컨테이너
- 도커
- centOS7
- ios
- k8s
- 도커 컨테이너
- swift 클로저
- 도커 이미지
- 리눅스
- docker
- NGINX
- Swift
- 인프라
- kubernetes
- 도커 명령어
- 운영체제
- devops
- boj
- AWS
- 네트워크
- 프로세스
- 쿠버네티스
- linux
Archives
- Today
- Total
귀염둥이의 메모
[백준] 14889번: 스타트와 링크 (C++) 본문
반응형
14889번: 스타트와 링크
예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다.
www.acmicpc.net
vis 배열에 스타트팀 인원들을 true로 표시하였고, 링크팀 인원들은 false이다.
각각의 모든 경우에 대해서 능력치 차이를 비교하여 차이의 최소를 구하였다.
소스코드
#include <bits/stdc++.h>
using namespace std;
int n;
int minimum = INT32_MAX;
int vis[21];
int stat[21][21];
void dfs(int k, int start) {
if (k == n / 2) {
int st = 0, lnk = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (vis[i] && vis[j]) st += stat[i][j]; // 스타트팀
else if (!vis[i] && !vis[j]) lnk += stat[i][j]; // 링크팀
}
}
minimum = (minimum < abs(st - lnk)) ? minimum : abs(st - lnk);
return;
}
for (int i = start; i <= n; i++) {
if (vis[i]) continue;
vis[i] = 1;
dfs(k + 1, i + 1);
vis[i] = 0;
}
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> stat[i][j];
dfs(0, 1);
cout << minimum;
return 0;
}
반응형
'CS > 백준' 카테고리의 다른 글
[백준] 14503번: 로봇 청소기 (C++) (0) | 2021.03.31 |
---|---|
[백준] 17144번: 미세먼지 안녕! (C++) (0) | 2021.03.30 |
[백준] 5014번: 스타트링크 (C++) (0) | 2021.03.29 |
[백준] 14500번: 테트로미노 (C++) (0) | 2021.03.28 |
[백준] 3190번: 뱀 (C++) (2) | 2021.03.28 |
Comments