250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바
- 재귀함수
- N과M
- 정올 1620
- 코테준비
- 알고리즘개념
- 전화번호속의암호
- 정보처리기사
- Bfs와DFS
- 완탐
- 에라토스테네스의채
- 볼륨 만들기
- 순열
- D드라이브생성
- 알고리즘
- 23288
- java
- 백준15652
- 백준2251
- BFS
- 파티션 크기 조정
- 코테
- 백준13458
- 중복조합
- 삼성역테
- 주사위굴리기2
- 백준
- 완전탐색
- 자바 코테
- 중복순열
Archives
- Today
- Total
뚱땅뚱땅
[알고리즘] 여행하는 외판원 문제(TSP) 본문
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 |
Comments