입력 코드
#include <stdio.h>
int p[10][10], N, min = 10000000;
char vt[10];
void tsp(char k, char d, int v) {
char i;
if (vt[k] || v >= min) return;
if (d == N - 1) {
if (p[k][0] && v + p[k][0] < min) min = v + p[k][0];
return;
}
vt[k] = 1;
for (i = 1 ; i < N ; i++)
if (p[k][i]) tsp(i, d + 1, v + p[k][i]);
vt[k] = 0;
}
int main() {
int i, j;
scanf("%d", &N);
for(i = 0 ; i < N ; i++)
for (j = 0 ; j < N ; j++)
scanf("%d", &p[i][j]);
tsp(0, 0, 0);
printf("%d\n", min);
}
출처 www.acmicpc.net/source/4405809
코드 설명
#백트래킹 #외판원 순회 문제
문제 출처
10971번: 외판원 순회 2
첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j
www.acmicpc.net
'C' 카테고리의 다른 글
#105. [백준_C언어] 6603 : 로또 \ 백트래킹 (0) | 2021.03.07 |
---|---|
#104. [백준_C언어] 10974 : 모든 순열 \ 브루트포스 알고리즘 (0) | 2021.03.07 |
#103. [백준_C언어] 1094 : 막대기 \ 비트마스킹 (0) | 2021.02.27 |
#102. [백준_C언어] 11723 : 집합 \ 비트마스킹 (0) | 2021.02.27 |
#101. [백준_C언어] 15649 : N과 M (1) \ 백트래킹 (0) | 2021.02.26 |