//要考虑起点终点可能为#的情况
#include<cstdio>
#include<cstring>
#include<iostream>
#define en '\n'
#define m(a,b) memset(a,b,sizeof a)
using namespace std;
const int N=100+5;
int nex[4][2]={
1,0,-1,0,0,-1,0,1};
char ma[N][N];
int sx,sy,ex,ey,n;
int isok(int x,int y){
return x>=1&&x<=n&&y>=1&&y<=n&&ma[x][y]!='#';
}
int dfs(int x,int y)
{
if(x==ex&&y==ey) return 1;
ma[x][y]='#';
for(int k=0;k<=3;++k)
{
int nx=x+nex[k][0],ny=y+nex[k][1];
if(!isok(nx,ny)) continue;
if(dfs(nx,ny)) return 1;
}
return 0;
}
int main
1792:迷宫(只判断是否可达终点 最最简单的搜索)
最新推荐文章于 2024-05-13 20:34:46 发布