Coding Test - cpp/DFS
미로탐색(DFS)
에드윈H
2021. 1. 8. 17:12
#include <iostream>
using namespace std;
int map[10][10];
int ch[10][10];
int cnt = 0;
int dx[4] = { 1, 0, -1, 0 };
int dy[4] = { 0, 1, 0, -1 };
void D(int x, int y)
{
int xx;
int yy;
if (x == 6 && y == 6)
cnt++;
else {
for (int index = 0; index < 4; index++) //4방향검사
{
xx = x + dx[index]; //4방향 위치
yy = y + dy[index];
if (xx < 0 || xx>6 || yy < 0 || yy>6) //범위 벗어남
continue;
if (map[xx][yy] == 0 && ch[xx][yy] == 0) //갈수 있는위치
{
ch[xx][yy] = 1; //표시
D(xx, yy); // 다음위치
ch[xx][yy] = 0; //표시 해제
}
}
}
}
int main()
{
int i, j;
for (i = 0; i < 7; i++) {
for (j = 0; j < 7; j++) {
scanf("%d", &map[i][j]);
}
}
ch[0][0] = 1;
D(0, 0);
if (cnt == 0) {
cout << -1 << endl;
}
cout << cnt << endl;
return 0;
}