오늘 DFS를 배웠고 오늘 밤 연습을했습니다.Traverse maze and Depth First Search
내 프로그램에서 문제가 발생했습니다.
void dfs(int x,int y){
if(maze[x][y]==0) maze[x][y]=2;
if(maze[8][8]==2){
flag=true;
return;
}
if(maze[x+1][y]==0 && x+1<9){
maze[x][y]=2;
maze[x+1][y]=2;
dfs(x+1,y);
if(f lag==false){
maze[x+1][y]=0;
maze[x][y]=0;
}
}
else if(maze[x][y+1]==0 && y+1<9){
maze[x][y]=2;
maze[x][y+1]=2;
dfs(x,y+1);
if(flag==false){
maze[x][y+1]=0;
maze[x][y]=0;
}
}
else if(maze[x-1][y]==0 && x-1>0){
maze[x][y]=2;
maze[x-1][y]=2;
dfs(x-1,y);
if(flag==false){
maze[x-1][y]=0;
maze[x][y]=0;
}
}
else if(maze[x][y-1]==0 && y-1>0){
maze[x][y]=2;
maze[x][y-1]=2;
dfs(x,y-1);
if(flag==false){
maze[x][y-1]=0;
maze[x][y]=0;
}
}
return;
}
1. 링크
내가 쓰는 프로그램입니다,하지만 난 최단 경로를 찾는 방법을 모르겠어요.2. 스택을 사용하여 수행하는 방법에 대한 조언을 할 수 있습니까? 재귀 적으로 만 사용합니다. 위키를 본 적이 있지만 스택 사용 방법을 이해할 수 없습니다 (예 : 1 사용 방법 . -D 배열은 2 차원 배열에 대한 포인트를 기록, 난 당신이 내 문제를 읽는 시간을 보내고 위해
관련 코드를 질문에 게시하고 들여 쓰기가 코드 페이지 – 111111
에있는 것과 같은 절반 페이지가 멋지 지 않은지 확인하십시오. 또한, 들여 쓰기가 마음에 들지 않는다면 커널 코드를 피하는 것이 좋습니다. – Alex
@ 111111 : (적어도 겉으로보기에는) 초보자에게는 무례하지 마십시오. 프로그래밍을 시작했을 때 나는 들여 쓰기가 전혀 없었습니다. 그리고 나는 거기에서 먼 길을 가졌습니다. 우리는 모두 초보자였습니다. – LiKao