본문내용
/*미로 생성을 랜덤함수를 써서 해봤고...
출력하면 생성된 미로와 길 찾은후의
미로 그리고 몇번만에 길이있는(제대로된) 미로가 생성되는가도 표시해봤습니다.
*/
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define height 9
#define width 10
#define exitrow height - 2
#define exitcol width - 1
float mazecount = 0;
typedef struct {
int vert;
int horiz;
} offsets;
offsets move[4] = {
{-1, 0},
{0, 1},
{1, 0},
{0, -1}
};
typedef struct {
int row;
int col;
int dir;
} element;
int maze[height][width];
int mark[height][width];
int found = FALSE;
void mazemake(), mazepath(), mazeprint();
main()
{
do{
mazemake();
mazepath();
} while(!found);
printf("\ncount: %d\n", (int) mazecount);
}
void stack_overflow(), stack_empty();
#define maxsize height*width
element stack[maxsize];
int top = -1;
void push(element position)
{
if (top >= maxsize - 1)
stack_overflow();
else {
stack[++top].row = position.row;
stack[top].col = position.col;
stack[top].dir = position.dir;
}
}
element pop()
{
if (top == -1)
stack_empty();
else {
return stack[top--];
}
}
void stack_overflow()
{
printf("Error! Stack overflows.\n");
return;
}
void stack_empty()
{
printf("Error! Stack underflows.\n");
return;
}
void mazemake()
{
int i, j, num;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
mark[i][j] = FALSE;
}
}
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
if (i == 0 || i == (height - 1) || j == 0 || j == (width - 1)){
maze[i][j] = 1;
}
}
}
srand(time(NULL));
for (i = 1; i < height-1; i++) {
for (j = 1; j < width-1; j++) {
num = rand()%100+1;
if (num > 40) maze[i][j] = 0;
else maze[i][j] = 1;
}
}
maze[1][1] = 0;
maze[height-2][width-2] = 0;
mazecount++;
}
void mazepath()
{
int row, col, nextX, nextY, dir;
element position;
mark[1][1] = TRUE;
position.row = 1;
position.col = 1;
position.dir = 0;
push(position);
출력하면 생성된 미로와 길 찾은후의
미로 그리고 몇번만에 길이있는(제대로된) 미로가 생성되는가도 표시해봤습니다.
*/
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define height 9
#define width 10
#define exitrow height - 2
#define exitcol width - 1
float mazecount = 0;
typedef struct {
int vert;
int horiz;
} offsets;
offsets move[4] = {
{-1, 0},
{0, 1},
{1, 0},
{0, -1}
};
typedef struct {
int row;
int col;
int dir;
} element;
int maze[height][width];
int mark[height][width];
int found = FALSE;
void mazemake(), mazepath(), mazeprint();
main()
{
do{
mazemake();
mazepath();
} while(!found);
printf("\ncount: %d\n", (int) mazecount);
}
void stack_overflow(), stack_empty();
#define maxsize height*width
element stack[maxsize];
int top = -1;
void push(element position)
{
if (top >= maxsize - 1)
stack_overflow();
else {
stack[++top].row = position.row;
stack[top].col = position.col;
stack[top].dir = position.dir;
}
}
element pop()
{
if (top == -1)
stack_empty();
else {
return stack[top--];
}
}
void stack_overflow()
{
printf("Error! Stack overflows.\n");
return;
}
void stack_empty()
{
printf("Error! Stack underflows.\n");
return;
}
void mazemake()
{
int i, j, num;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
mark[i][j] = FALSE;
}
}
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
if (i == 0 || i == (height - 1) || j == 0 || j == (width - 1)){
maze[i][j] = 1;
}
}
}
srand(time(NULL));
for (i = 1; i < height-1; i++) {
for (j = 1; j < width-1; j++) {
num = rand()%100+1;
if (num > 40) maze[i][j] = 0;
else maze[i][j] = 1;
}
}
maze[1][1] = 0;
maze[height-2][width-2] = 0;
mazecount++;
}
void mazepath()
{
int row, col, nextX, nextY, dir;
element position;
mark[1][1] = TRUE;
position.row = 1;
position.col = 1;
position.dir = 0;
push(position);
추천자료
- 한국의 경제 위기와 IMF 프로그램: 연구를 위한 시론
- 수열,구구단,소수판별프로그램
- 인터넷중독 예방 및 관련 프로그램 활용법
- 행동수정요법을 활용한 성인여성 체중조절 프로그램
- 다문화 가족의 부부관계 개선 프로그램
- 집단 따돌림 예방을 위한 집단상담 프로그램
- 상담과 생활지도 프로그램 -“인터넷 중독”관련
- [경영과학]다이어트 식단 프로그램
- 맞벌이 부부가정의 부모역할 강화 프로그램
- 보육론 <부모교육 프로그램>
- 보육론 <부모교육 프로그램>
- 사회 부적응 사례 및 프로그램
- [영유아교수방법론] 구성주의 프로그램에 적합한 학습방법과 그것을 실천할 때 교사가 해야 ...
- (만1세 신입적응프로그램) 만1세 어린이집 신입원아적응일지 5명 분량입니다.^^
소개글