#include <stdio.h> #include <iostream> #include <math.h> using namespace std; int map[30][30]; int N; int Min = 9999999; void combination(int start[], int visited[], int idx, int cnt, int std) { if(cnt == std + 1) { int startSum = 0; int linkSum = 0; int link[20]; int linkCnt = 0; for(int i = 1; i <= N; i++) { if(visited[i] == 0) { link[++linkCnt] = i; } } for(int i = 1; i < cnt; i++) { for(int j = 1; j < cnt; j++) { startSum += map[start[i]][start[j]]; } } for(int i = 1; i <= linkCnt; i++) { for(int j = 1; j <= linkCnt; j++) { linkSum += map[link[i]][link[j]]; } } if(abs(startSum-linkSum) < Min) { Min = abs(startSum-linkSum); } return; } for(int i = idx; i <= N; i++) { start[cnt] = i; visited[i] = 1; combination(start, visited, i+1, cnt+1, std); visited[i] = 0; } } int main(void) { // freopen("B15661_input.txt", "r", stdin); scanf("%d", &N); for(int i = 1; i <= N; i++) { for(int j = 1; j <= N; j++) { scanf("%d", &map[i][j]); } } // 팀원이 최소 1명 ~ N/2명 for(int i = 1; i <= N/2; i++) { int start[20] = {0}; int visited[20] = {0}; combination(start, visited, 1, 1, i); } cout << Min; return 0; } | cs |
'Baekjoon > BruteForce' 카테고리의 다른 글
[백준 2422] 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (조합) (C/C++) (★) (1) | 2019.11.19 |
---|---|
[백준 3980] 선발 명단 (순열) (C/C++) (★) (0) | 2019.11.18 |
[백준 15686] 치킨배달 (조합) (C/C++) (0) | 2019.11.18 |
[백준 2309] 일곱 난쟁이 (조합) (C/C++) (1) | 2019.11.18 |
[백준 2529] 부등호 (순열) (C/C++) (0) | 2019.11.18 |