728x90
https://acmicpc.net/problem/14889
n = int(input())
s_ij = [list(map(int, input().split())) for i in range(n)]
min_val = 100 * 20
visit = [0] * n
def comb(index=0, arr=[]):
if index == (n // 2):
global min_val
value = total_chk(arr)
if min_val > value:
min_val = value
else: #
tmp_index = arr[-1] if arr else index
for i in range(tmp_index, n):
if visit[i]: continue
visit[i] = 1
comb(index + 1, arr+[i])
visit[i] = 0
def total_chk(arr):
total = 0
for i in range(len(arr)):
for j in range(i+1, len(arr)):
total += s_ij[arr[i]][arr[j]] + s_ij[arr[j]][arr[i]]
arr2 = list(set(range(n)) - set(arr))
total2 = 0
for i in range(len(arr)):
for j in range(i+1, len(arr)):
total2 += s_ij[arr2[i]][arr2[j]] + s_ij[arr2[j]][arr2[i]]
result = abs(total-total2)
return result
comb()
print(min_val)
n개의 원소를 가진 집합에서 원소개수의 반을 가지는 부분집합을 구하는 문제이다. nC(n//2)
부분집합을 백트래킹을 사용해서 구했고, 부분집합을 인자로 넘겨서 팀 능력치의 차이를 구했다.
하나의 부분집합을 구하면 반대편의 집합도 구할수 있다. 'arr2 = list(set(range(n)) - set(arr))'
백준 solved.ac 골드 찍었다 헤헿
1학기안으로 플래찍을수 있겠지?
swea 4012 [모의sw역량테스트] 요리사
이 문제랑 완전히 똑같다 복붙해서 냈더니 통과
T = int(input())
for test_case in range(1, T + 1):
n = int(input())
s_ij = [list(map(int, input().split())) for i in range(n)]
min_val = 100 * 20
visit = [0] * n
def comb(index=0, arr=[]):
if index == (n // 2):
global min_val
value = total_chk(arr)
if min_val > value:
min_val = value
else: #
tmp_index = arr[-1] if arr else index
for i in range(tmp_index, n):
if visit[i]: continue
visit[i] = 1
comb(index + 1, arr+[i])
visit[i] = 0
def total_chk(arr):
total = 0
for i in range(len(arr)):
for j in range(i+1, len(arr)):
total += s_ij[arr[i]][arr[j]] + s_ij[arr[j]][arr[i]]
arr2 = list(set(range(n)) - set(arr))
total2 = 0
for i in range(len(arr)):
for j in range(i+1, len(arr)):
total2 += s_ij[arr2[i]][arr2[j]] + s_ij[arr2[j]][arr2[i]]
result = abs(total-total2)
return result
comb()
print("#{} {}".format(test_case, min_val))
'STUDY > Algorithm' 카테고리의 다른 글
[SWEA] 1953 탈주범 검거 (0) | 2021.03.14 |
---|---|
[SWEA] 1949 등산로 조성, 모의 SW 역량테스트, python (0) | 2021.03.11 |
[백준] 14888 연산자 끼워넣기 (0) | 2021.03.10 |
[백준] 9663 N-Queen (0) | 2021.03.10 |
[백준] 2580 스도쿠 (0) | 2021.03.09 |