[C언어] 14889 스타트와 링크

SW 업무 관련/백준

[C언어] 14889 스타트와 링크

WillBe_ 2018. 9. 25. 17:22

조합으로 2팀으로 나눈 후에!!!!

두 팀의 능력치의 최소를 구하는 문제!!


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <string.h>
#define MAX 987654321
 
int visit[21];
int map[22][22];
int N, MIN;
 
int abs(int a)
{
    return a < 0 ? -1 * a : a;
}
 
void C(int cur, int n)
{
    if (n == N/2)
    {
        int team_1 = 0;
        int team_2 = 0;
        int team_bal = 0;
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < N; j++)
            {
                if (visit[i] == 1 && visit[j] == 1)
                {
                    team_1 += map[i][j];
                }
                else if (visit[i] == 0 && visit[j] == 0)
                {
                    team_2 += map[i][j];
                }
            }
        }
        team_bal = abs(team_1 - team_2);
        if (MIN > team_bal)
            MIN = team_bal;
 
        return;
    }
 
    for (int i = cur + 1; i < N; i++)
    {
        visit[i] = 1;
        C(i, n + 1);
        visit[i] = 0;
    }
 
    return;
}
 
 
int main()
{
    MIN = MAX;
    scanf("%d",&N);
 
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            scanf("%d"&map[i][j]);
        }
    }
 
    for (int i = 0; i < N; i++)
    {
        visit[i] = 1;
        C(i, 1);
        visit[i] = 0;
    }
 
 
    printf("%d\n", MIN);
    return 0;
}
cs


'SW 업무 관련 > 백준' 카테고리의 다른 글

[C언어] 14888. 연산자 끼워넣기  (0) 2018.09.25
[C언어] 15686. 치킨배달  (0) 2018.09.25
[C언어] 14890. 경사로  (0) 2018.09.25
[C언어] 14891. 톱니바퀴  (0) 2018.09.24
[C언어] 25686 치킨 배달.  (0) 2018.09.24