728x90
반응형
# 출처: 알고리즘을 통한 문제해결 전략 6과
-완전 탐색으로 문제 풀기
int n; // 도시의 수
double dist[MAX][MAX]; // 두 도시 간의 거리를 저장하는 배열
//path: 지금까지 만든 경로
//visited: 각 도시의 방문 여부
//currentLength: 지금까지 만든 경로의 길이
//나머지 도시들을 모두 방문하는 경로들 중 가장 짧은 것의 길이를 반환
double shortestPath(vector<int>& path, vector<bool>& visited, double currentLength) {
//base case: 모든 도시를 다 방문하면, 시작 도시로 돌아가고 종료.
if (path.size() == n)
return currentLength + dist[path[0]][path.back()];
double ret = INF; // 매우 큰 값으로 초기화
// 다음 방문할 도시를 전부 시도
for (int next = 0; next < n; next++) {
if (visited[next]) continue;
int here = path.back();
path.push_back(next);
visited[next] = true;
double cand = shortestPath(path, visited, currentLength + dist[here][next]);
ret = min(ret, cand);
visited[next] = false;
path.pop_back();
}
return ret;
}
728x90
반응형
'아카이브' 카테고리의 다른 글
[2020 정보처리기사 필기] 2.4.52 개발 단계에 따른 애플리케이션 테스트 (0) | 2020.04.01 |
---|---|
[2020 정보처리기사 필기] 2.4.51 테스트 기법에 따른 애플리케이션 테스트 (0) | 2020.04.01 |
[알고리즘] 알고스팟 BOARDCOVER 문제 (0) | 2020.04.01 |
[2020 정보처리기사 필기] 2.4.50 애플리케이션 테스트 분류 (0) | 2020.04.01 |
[2020 정보처리기사 필기] 2.3.48 빌드 자동화 도구 (0) | 2020.04.01 |