#include<iostream>
using namespace std;
char a[10][10];
int b[10][10];
bool tmp[10][10],f=0;//tmp 是判断的
int dx[4]={0,0,1,-1};//左右上下
int dy[4]={-1,1,0,0};
int ans,fx,fy,sx,sy,T,n,m,l,r;
int dfs(int x,int y)
{
if(x==fx&&y==fy)//判断是否到达终点 fx 和fy是终点的坐标 5 5
{
return ans;
}
else
{
for(int i=0;i<4;i++)//上下左右四个方向
{
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=0 && nx<=n && ny>=0 && ny<=m/* 判断其在数组内部*/ && tmp[nx][ny]==0 && b[nx][ny]==0/* 判断该位置并非'#' */ && (a[nx][ny]=='.' || a[nx][ny]=='T') )
//判断是否出界 & 是否访问过 & 不是陷阱
{
if(f==0) ans++; //累加
tmp[nx][ny]=1;
if(nx==fx && ny==fy)
{
f=1;
}
dfs(x+dx[i],y+dy[i]);//为什么 返回的ans=9 可以再返回到上一级的ans
}
}
}
}
1.就是为什么假如最内层的dfs返回值为9 为什么输出就是9 他不是最内层外面的几层都没有执行return嘛 应该无法将9往上一级嵌套的dfs 返回 ?
2. 假如最内层return的值是9 为什么将
if(nx==fx && ny==fy)
{
f=1;
}
这段删除 它的值会改变?