https://vjudge.net/contest/242868#problem/B
注意题的要求要及时结束递归!!
#include <iostream>
#include <cstdio>
#include <string>
#include <queue>
#include <stack>
using namespace std;
bool v[10][10]={0};
bool flag=false;
int maze[10][10];
int dir[4][2]={0,1,1,0,-1,0,0,1};
struct Node{
int x;
int y;
}n;
stack<Node> s;
stack<Node> s1;
void dfs(Node p)
{
v[p.x][p.y]=1;
s.push(p);
if(p.x==4&&p.y==4)
{
flag=true;
while(!s.empty())
{
s1.push(s.top());
s.pop();
}
// while(!s1.empty())
// {
// printf("(%d,%d)\n",(s1.top()).x,(s1.top()).y);
// s1.pop();
// }
return;
}
Node now;
for(int i=0;i<4;i++)
{
now.x=p.x+dir[i][0];
now.y=p.y+dir[i][1];
if(maze[now.x][now.y]!=1&&now.x>=0&&now.x<5&&now.y>=0&&now.y<5&&v[now.x][now.y]!=1)
{
dfs(now);
}
if(flag) return;
}
s.pop();
return;
}
int main()
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
scanf("%d",&maze[i][j]);
n.x=0,n.y=0;
dfs(n);
while(!s1.empty())
{
printf("(%d, %d)\n",(s1.top()).x,(s1.top()).y);
s1.pop();
}
return 0;
}