BFS 미로 최단경로
- DFS 알고리즘을 이용하여 주어진 미로의 최단 경로를 구하라.
제한 사항
- N X N 미로의 크기 N은 5 ~ 10
- 각 수행 시간은 10msec를 넘지 않도록 한다.
입력과 출력
- 입력은 맨 처음은 테스트 횟수(TC), 그 다음부터 N X N 미로의 크기 N 을 입력받고
미로의 원소들을 각각 입력받는다.( 입력은 첨부된 input.txt 파일을 이용한다. ) input.txt
시작점(1), 목표점(2), 길(0), 벽(7) = 이동할 수 없는 지점
- 출력은 우측의 출력 예를 참고한다.
입력 예 |
출력 예 |
|
#1, ? msec. answer = 6 #2, ? msec. answer = 7 #3, ? msec. answer = 12 #4, ? msec. answer = 15 #5, ? msec. answer = 19 |
#include <stdio.h> #define NMAX 10 typedef struct xy{ typedef struct queue{ int map[NMAX][NMAX]; void bfs( XY); int main( void) int N; freopen("input.txt","r",stdin); scanf("%d", &TC); for( T = 0 ; T < TC ; T ++) scanf("%d", &N); for( i = 0 ; i < N ; i ++) // save the position of starting point. result = -1; bfs( s); time_e = clock(); // get the ending time. // calculate the time printf("#%d, %d msec. ",T+1 , processtime); return 0; /* newq->next = NULL; if( temp == NULL) while( temp->next != NULL) temp->next = newq; /* /* v.x = temp->v.x; Q = Q->next; free(temp); return v; /* enqueue( s); // mark this position as VISITED. while( !queue_empty()) // inspect the adjacency positions for( j = v.x - 1 ; j < v.x + 2 ; j ++) // if the position is the same with ending point. Q = NULL; break; // update weights of the routes // add this position to the queue } |
'프로그래밍 언어들 > 알고리즘 문제풀이' 카테고리의 다른 글
C언어 퍼즐 게임 (puzzle game in C), 퍼즐 맞추기 알고리즘 (2) | 2016.10.21 |
---|---|
C언어 DFS 미로 최단경로 구하기(escape the maze in C) (0) | 2016.10.16 |
20141124_스택(stack)을 이용한 수식의 중위 -> 전위 표기법 변환 (0) | 2014.11.24 |
20141124_스택(stack)을 이용한 수식의 중위 -> 후위 표기법 변환 (0) | 2014.11.24 |