반응형
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
- devops
- 클라우드
- Swift
- 도커 명령어
- Python
- 네트워크
- 인프라
- 프로세스
- 도커
- docker
- 운영체제
- kubernetes
- NGINX
- boj
- swift 클로저
- 도커 이미지
- 도커 컨테이너
- k8s
- 데브옵스
- linux
- AWS
- 컨테이너
- os
- centOS7
- ios
- 쿠버네티스
- 리눅스
- C++
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