20分求助
  • 板块P1238 走迷宫
  • 楼主Cssen
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/12 14:49
  • 上次更新2023/10/27 11:52:00
查看原帖
20分求助
593495
Cssen楼主2022/9/12 14:49
#include<iostream>
#include<cstdio>
using namespace std;
int dx[5]={0,0,-1,0,1},dy[5]={0,-1,0,1,0},n,m,sx,sy,ex,ey;
struct node
{
	int ansx,ansy;	
}ans[230];
bool martix[15][15],judge[15][15],f=true;
inline void print(int k){
	f=false;
	for(int i=1;i<k;i++) printf("(%d,%d)->",ans[i].ansx,ans[i].ansy);
	printf("(%d,%d)\n",n,m);
}
inline void dfs(int x,int y,int step){
	ans[step].ansx=x;
	ans[step].ansy=y;
	if(x==ex&&y==ey){
		print(step);
		return;
	}
	for(int i=1;i<=4;i++){
		int xx=x+dx[i],yy=y+dy[i];
		if(!judge[xx][yy]&&martix[xx][yy]&&xx>=1&&xx<=n&&yy>=1&&yy<=m){
			judge[xx][yy]=true;
			dfs(xx,yy,step+1);
			judge[xx][yy]=false;
		}
	}
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&martix[i][j]);
	scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
	dfs(sx,sy,1);
	if(f) printf("-1");
	return 0;
}
2022/9/12 14:49
加载中...