dfs 10分求助
  • 板块B3625 迷宫寻路
  • 楼主wyxrl
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/8/19 11:05
  • 上次更新2024/8/19 13:07:41
查看原帖
dfs 10分求助
1266960
wyxrl楼主2024/8/19 11:05
#include<bits/stdc++.h>
using namespace std;
const int N =1e5+1;
int n,m;
int dx[]={-1,0,1,0},
	dy[]={0,1,0,-1};
char Map[101][101];
bool Mark[101][101];
bool flag=false;
void DFS(int x,int y){
	if(x==n&&y==m){
		flag=true;
		return;
	}
	for(int j=0;j<4;j++){
		int tx=x+dx[j],
			ty=y+dy[j];
		if(tx<1||tx>n||ty<1||ty>m)	continue;
		if(Map[tx][ty]=='.'&&Mark[tx][ty]==false){
			Mark[tx][ty]=true;
			DFS(tx,ty);
			Mark[tx][ty]=false;
		}
	}
}
int main (){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>Map[i][j];
		}
	}
	DFS(1,1);
	if(flag)	cout<<"Yes";
	else	cout<<"No";
	return 0;
}
2024/8/19 11:05
加载中...