不会求解
查看原帖
不会求解
1402457
wangjunyi0413楼主2025/7/29 16:32
#include<bits/stdc++.h>
using namespace std;
int m,n,a[20][20],v[20][20];
int sx,sy,fx,fy;
int dx[]={0,-1,0,1},dy[]{-1,0,1,0};
bool dfs(int sx,int sy){
	//1.检查是否为终点
	if(sx==fx&&sy==fy) return true;
	//2.检查是否越界
	if(sx<1||sx>n||sy<1||sy>m) return false;
	//3.检查是否有障碍物
	if(a[sx][sy]==0) return false;
	//4.检查是否走过该点(防止绕圈) 
	if(v[sx][sy]) return false;
	v[sx][sy]=true;
	for(int k=0;k<4;k++){
		int zx=sx+dx[k],zy=sy+dy[k];
		if(dfs(zx,zy)) return true;
	}
	return false;

}
int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
			v[i][j]=0;
		}
	}
	v[sx][sy]=true;
	cin>>sx>>sy;
	cin>>fx>>fy;
	bool f=dfs(sx,sy);
	cout<<f;
	return 0;
}
2025/7/29 16:32
加载中...