인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

jisoo12's profile image
jisoo12

asked

Introduction to Algorithm Problem Solving for IT Employment (with C/C++): Coding Test Preparation

65. Maze Search (2D Array DFS)

65번 문제 질문입니다.

Written on

·

201

0

int n, k ,cnt = 0;

int ch[10][10];

int map[10][10];

int dx[4] = {-1,1,0,0};

int dy[4] = {0,0,-1,1};

void DFS(int x, int y){

int i,xx,yy;// 이동할 격자 좌표 

if(x == 7 && y ==7){

cnt++;

}

else {

for(i = 0; i<4;i++){

xx = x+dx[i];

yy = y+dy[i];

if(xx<1 || xx>7 || yy>7 || yy<1 ) continue;

if(map[xx][yy]==0){

map[xx][yy] = 1;

DFS(xx,yy);

map[xx][yy] = 0;

}

}

}

}

int main(){

freopen("input.txt", "rt",stdin); //rt read txt

int i,c,b,j;

for(i = 1; i<=7;i++){

for(j= 1; j<=7;j++){

scanf("%d", &map[i][j]);

}

}

ch[1][1]=1;

DFS(1,1);

printf("%d",cnt);

return 0;

궁금한게 생겨서 질문드립니다. 

map에서 지나가는 길에 1을 넣으면서 가고 돌아올때 0을 넣으면서 돌아오면 될것같아서 위처럼 구현했는데 8이아니라 16이 나오더라구요

왜 그런지 알 수 있을가요? 제가 무엇을 놓친걸까요.. 

C++코테 준비 같이 해요!

Answer 1

0

codingcamp님의 프로필 이미지
codingcamp
Instructor

안녕하세요^^

map으로 체크역할까지 할려고 했으니 main()에서 시작하는 (1, 1)좌표도 ch[1][1]=1이 아니라 map[1][1]=1로 하고 시작해야 합니다.

jisoo12's profile image
jisoo12

asked

Ask a question