pC.NET

Welcome to oscc.kr



 미로찾기 [우수법]
2020-05-12 10:46:08
Hit : 1134

작성자 : 피시키드
- File #1 : mazesrc.zip(4.3 KB), Download : 25
- File #2 : mazeexe.zip(142.6 KB), Download : 23

txt 파일로부터 미로 데이터를 입력받아 길을 찾는다.

txt 파일은 실행파일과 같은 경로에 위치해야 한다.

 

미로DB는 "0"과 " "을 이용하여 작성하면 되고, 최대 크기는 100x80이다.

 

알고리즘은 "오른쪽 손을 벽에 대고 가면 미로를 빠져나올 수 있다"를 기초로 작성되었다.

즉, 갈림길에서 오른쪽을 최우선 선택한다.

 

 

a. 

아래와 같이 진로의 방향에 번호를 부여한다.

← : 1, ↑ : 2, → : 3, ↓ : 4

 

b.

만약 1번(←)으로 진로를 진행하고 있었다면,

다음 칸을 옮기기 위해 2(↑),1(←),4(↓),3(→) 순으로 진로를 탐색한다.

 

만약 2번으로 진로를 진행하고 있었다면,

다음 칸을 옮기기 위해 3,2,1,4 순으로 진로를 탐색한다.

  

만약 3번으로 진로를 진행하고 있었다면,

다음 칸을 옮기기 위해 3,2,1,4 순으로 진로를 탐색한다.

 

만약 4번으로 진로를 진행하고 있었다면,

다음 칸을 옮기기 위해 1,4,3,2 순으로 진로를 탐색한다.

 

: 진로 탐색은 4->3->2->1 로 이어지는 순환 구조를 띄고 있다.

 

 

c.

아래와 같이 현재 방향성에 따라 진로를 탐색하는 함수를 호출한다.

 

방향성 1 -> 2번 호출

방향성 2 -> 3번 호출

방향성 3 -> 4번 호출

방향성 4 -> 1번 호출

 

 

d.

진로를 탐색하는 함수는 아래와 같이 서로를 호출하도록 한다.

 

1번 (←)

왼쪽이 통로라면 한칸 이동

왼쪽이 벽이라면 4번 호출

 

2번 (↑)

위쪽이 통로라면 한칸 이동

위쪽이 벽이라면 1번 호출

 

3번  (→)

오른쪽이 통로라면 한칸 이동

오른쪽이 벽이라면 2번 호출

 

4번(↓)

아래쪽이 통로라면 한칸 이동

아래쪽이 벽이라면 3번 호출

 

* 피시키드님에 의해서 게시물 이동되었습니다 (2024-04-26 18:49)

  피시키드
회원님의 소개글이 없습니다.
 6490
 83


변수명, 주소, 값, 포인터 요약
구조체 선언

Copyright (C) 1997-2025 All Rights Reserved.

Powered by
DNS server, DNS service 우분투 리눅스 웹서비스 AbuseIPDB Contributor Badge