길찾기문제 질문이요!
한
안녕하세요 ^^
미로찾기 문제 소스를 짜다가 막혀 이렇게 질문의 글을 남기게 되었네요
저는 소스를 벽을 큰수로 정하고 미로부분을 0으로해서 구현하고싶은데요
오른쪽 : 1순위 아래쪽 : 2순위 왼쪽 : 3순위 위쪽 : 4순위
로정하여 저는 index값을 정하여 미로를 지나갈때마다 index값을 1씩증가시키며 통과한 배열부분에 저장하면서
현재 머무르고 있는 곳보다 오른쪽 칸의 값이 더작으면 오른쪽으로 가고
현재 머무르고 있는 곳보다 오른쪽 칸의 값이 더크고 아래쪽의값이 더 작으면아래쪽으로 가고
현재 머무르고 있는 곳보다 오른쪽 칸의 값이 더크고 아래쪽의값이 더크고 왼쪽의값이 더 작으면왼쪽으로 가고
위쪽으로도 이러한 방식을 통하여 만들어보려고 생각해 보았는데요
제가생각할때에는 그러면 갔던길이 막혀도 벽의 값보다 지나서온 하나 전단계의 값이 작을것 이므로 되돌아가고 이런식으로요
근데 제가 짜보니 안되네요 ㅡㅡ;;;
도와주세요 ㅜㅠ 이런 방법으로는 안되는건가요?? ㅜㅠ
#includestdio.h
#define n 99999
int m[7][7] = {
{n,n,n,n,n,n,n},
{n,0,0,0,0,0,n},
{n,0,n,0,n,0,n},
{n,0,0,n,0,n,n},
{n,n,0,n,0,n,n},
{n,0,0,0,0,0,n},
{n,n,n,n,n,n,n}};
int success = 0;
int index=1;
int visit(int i, int j)
{
m[i][j] = index++;
if(i==5 && j==5) success = 1;
if(success!=1&&m[i+1][j]m[i][j]){
visit(i+1,j);
return 0;
}
if(success != 1 && m[i][j+1]m[i][j]&&m[i+1][j]m[i][j]){
visit(i, j+1);
return 0;
}
if(success != 1 && m[i][j+1]m[i][j]&&m[i+1][j]m[i][j]&&m[i+1][j]m[i][j]){
visit(i, j-1);
return 0;
}
if(success != 1 && m[i][j+1]m[i][j]&&m[i+1][j]m[i][j]&&m[i+1][j]m[i][j]&&m[i+1][j]m[i][j]){
visit(i-1, j);
return 0;
}
if(success == 1)
printf((%d, %d) ,i,j);
return success;
}
void main(){
visit(1,1);
}