728x90
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 | ''' 1 3 0 18 34 48 0 55 18 7 0 TSP문제 ''' def perm(n, k, cursum): # 원소의 수 뎁스 global ans #가지치기하려면 여기다 넣어야함 # if ans < cursum : return 내가가진값보다 니가커? 그럼 가지처버렷 if n == k: cursum += dist[t[N-1]][t[N]] if ans > cursum: ans = cursum else: for i in range(n): if visited[i+1] : continue t[k+1] = a[i+1] visited[i+1] = True perm(n, k+1, cursum + dist[t[k]][t[k+1]]) visited[i+1] = False T=int(input()) for tc in range(1, T+1): ans = 987654321 N = int(input()) a = list(range(N)) # 0 1 2 #a = [list(map(int,input().split())) for _ in range(N)] t = [0] * N + [0] # 0 1 2 0 으로 저장 ( 출발, 도착, 고정) visited = [0] * N dist = [list(map(int,input().split())) for _ in range(N)] perm(N-1, 0,0 ) # N - 1 : 0번 인덱스는 제외 print("#{} {}".format(tc, ans)) | cs |
728x90
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준] 1330. 두 수 비교하기, 2739. 구구단, 2753. 윤년 구하기, 2884. 알람 시계, 8383. 합[백준] 1330. 두 수 비교하기, 2739. 구구단, 2753. 윤년 구하기, 2884. 알람 시계, 8383. 합 (0) | 2021.04.12 |
---|---|
2491. 수열 (틀림) (0) | 2021.04.11 |
2628. 종이자르기 (0) | 2021.04.10 |
1244. 스위치 켜고 끄기 (0) | 2021.04.08 |
[백준] 2669. 직사각형 네개의 합집합의 면적 구하기 (0) | 2021.03.20 |