오늘은 지난번에 이어서 미로찾기 문제를 Queue를 이용해서 푸는 방법을 알아보겠다.
Map 하고 i,j는 지난번 방법과 같다.
다만 지난번 방법하고 다르게 가까운데를 먼저 가보게끔 구현을 하게된다.
이러한 BFS 의 특징중에 하나는 제일 짧은 길을 찾을 수 있다는 것이다.
코드는 다음과 같은 형식을 가지게 된다.
BFS 명시적 Queue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
int Map[M][N];
int i, j;
int Find()
{
QueueInsert(0, 0);
while( ){
( i, j ) = QueueDelete() //방문하기 직전, Queue가 Empty이면 실패
//Map[i][j] == 0인 경우만
Map[i][j] = '*'; //목적지 확인
// (i, j+1), (i, j-1), (i+1, j), (i-1, j)중 0인 좌표를 queue에 Insert
}
}
|
'프로그래머, 보안 관련 지식 > 자료구조' 카테고리의 다른 글
자료구조: Linked List (0) | 2020.04.28 |
---|---|
자료구조: Equivalence Relation(동치 관계) (1) | 2020.04.26 |
자료구조 : Stack & Queue(2) (0) | 2020.04.25 |
자료구조 : Stack & Queue(1) (0) | 2020.04.17 |
자료구조: String Matching(2) (0) | 2020.04.17 |