입력 코드
#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
코드 설명
#백트래킹 #외판원 순회 문제
문제 출처
'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 |