소개글
// 미로 찾기 알고리즘
// 실행환경 : win-xp, 512MB RAM, P4 2.01GHz
// 사용언어 : VC++ Win32 Console
-------------------------------------------------------------------------------------
소스
-------------------------------------------------------------------------------------
#include
#include
#include
#include
#define MAX_STACK_SIZE 100 //스택의 최대 크기
#define ROW_SIZE 11 //미로의 행 길이
#define COL_SIZE 15 //미로의 열 길이
#define TRUE 1
#define FALSE 0
typedef struct //미로 탐색 경로가 들어갈 스택
{
int row, col, dir;
}element;
element stack[MAX_STACK_SIZE];
int top = -1; //스택의 top변수 값 지정
typedef struct //미로의 8방향을 좌표를 검색할 구조체
{
int vert, horiz;
}offsets;
offsets move[8];
목차
없음
본문내용
// 미로 찾기 알고리즘
// 실행환경 : win-xp, 512MB RAM, P4 2.01GHz
// 사용언어 : VC++ Win32 Console
-------------------------------------------------------------------------------------
소스
-------------------------------------------------------------------------------------
#include
#include
#include
#include
#define MAX_STACK_SIZE 100 //스택의 최대 크기
#define ROW_SIZE 11 //미로의 행 길이
#define COL_SIZE 15 //미로의 열 길이
#define TRUE 1
#define FALSE 0
typedef struct //미로 탐색 경로가 들어갈 스택
{
int row, col, dir;
}element;
element stack[MAX_STACK_SIZE];
int top = -1; //스택의 top변수 값 지정
typedef struct //미로의 8방향을 좌표를 검색할 구조체
{
int vert, horiz;
}offsets;
offsets move[8];
int mark[ROW_SIZE+2][COL_SIZE+2]; // 미로의 탐색 경로를 표시할 배열
int maze[ROW_SIZE+2][COL_SIZE+2] = // 미로를 구성할 배열 - 바깥테두리는 모두 1로 표시함
{
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1},
{1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1},
{1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1},
{1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1},
{1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1},
{1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1},
{1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1},
{1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
};
// 미로의 마지막을 나타내는 변수.
int EXIT_ROW = ROW_SIZE, EXIT_COL = COL_SIZE;
// 스택이 다 찰경우 overflow 경고를 보냄
void stack_full()
{
fprintf(stderr, "Stack is full!!n");
}
// 스택이 비어있다고 알림.
element stack_empty()
{
element item;
// 스택의 초기 top 값이 -1이므로 col, row, dir 값을 -1로 채운다.
item.col = -1;
item.dir = -1;
item.row = -1;
fprintf(stderr, "Stack is empty!!n");
return item;
}
참고 자료
없음