본문 바로가기
IT/BOJ

백준(BOJ) 14889 스타트와 링크 *

by 빨강자몽 2019. 3. 22.

# DFS # 브루트 포스


n이 작아서 완전 탐색으로 모든 경우 훑어도 됩니다.


#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <math.h>
#include <limits.h>
#include <string.h>
#include <string>
#include <sstream>
#define MAX 55
#define INF 2123456789

using namespace std;
typedef long long ll;

int n,mi=INF,val[MAX][MAX];
bool a[MAX];

// dfs를 이용하여 팀의 조합을 탐색한다.
void dfs(int cur,int cnt){
    if(cnt==n/2)
    {
        int suma=0,sumb=0;
        // 팀이 완성되었을때 a팀과 b팀의 합을 구해 차이를 구해준다.
        for(int i=1;i<=20;i++){
            for(int j=1;j<=20;j++) {
                if (a[i] && a[j])
                    suma += val[i][j];
                if(!a[i]&&!a[j])
                    sumb += val[i][j];
            }
        }
        mi=min(mi,abs(suma-sumb));
        return;
    }
    for(int i=cur;i<=n;i++) {
        a[i]=true;
        dfs(i + 1, cnt + 1);
        a[i]=false;
    }
}

int main() {
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
            scanf("%d",&val[i][j]);
    }
    dfs(1,0);
    printf("%d",mi);
    return 0;
}


'IT > BOJ' 카테고리의 다른 글

백준(BOJ) 14891 톱니바퀴 *  (0) 2019.03.25
백준(BOJ) 14890 경사로 **  (0) 2019.03.22
백준(BOJ) 14888 연산자 끼워넣기 *  (0) 2019.03.21
백준(BOJ) 13458 로봇 청소기 **  (0) 2019.03.20
백준(BOJ) 13458 시험 감독 *  (0) 2019.03.18