SWEA 4012 요리사(with Python)

daeungdaeung·2021년 10월 5일
0
def comb(n, r, idx):
    if r <= 0:
        global answer
        # compute difference
        food1_score = 0
        food2_score = 0
        for j in range(N):
            for k in range(N):
                if food[j] == food[k] and food[j] == 1:
                    food1_score += synergy_info[j][k]
                elif food[j] == food[k] and food[j] == 0:
                    food2_score += synergy_info[j][k]

        difference = abs(food1_score - food2_score)
        if answer > difference:
            answer = difference
        return

    for i in range(idx + 1, n):
        if food[i] == 0:
            food[i] = 1
            comb(n, r-1, i)
            food[i] = 0

T = int(input())
for tc in range(1, T+1):
    N = int(input())
    synergy_info = [list(map(int, input().split())) for _ in range(N)]

    food = [0] * N

    answer = 1e+10

    comb(N, N//2, 0)

    print(f'#{tc} {answer}')
profile
개발자가 되고싶읍니다...

0개의 댓글