20分求助
  • 板块P1238 走迷宫
  • 楼主王君诺弈!悟!
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/4/16 12:00
  • 上次更新2023/10/28 03:38:01
查看原帖
20分求助
539529
王君诺弈!悟!楼主2022/4/16 12:00

rt

#include<bits/stdc++.h>
using namespace std;
const int N=18;
int a[N][N],vis[N][N],anx[N*N],m,n,zx,zy,qx,qy,any[N*N],ans,f[4][2]={0,-1,-1,0,0,1,1,0},kx,ky;
void dfs(int x,int y,int b){
	if(x==zx&&y==zy){
		++ans;
		for(int i=0;i<b;++i){
			printf("(%d,%d)->",anx[i],any[i]);
		}
		printf("(%d,%d)\n",anx[b],any[b]);
		return ;
	}
	for(int i=0;i<4;++i){
		kx=x+f[i][0];
		ky=y+f[i][1];
		if(kx<=m&&ky<=n&&kx>=1&&ky>=1&&a[kx][ky]==1&&vis[kx][ky]==0){
			anx[b+1]=kx;
			any[b+1]=ky;
			vis[kx][ky]=1;
			dfs(kx,ky,b+1);
			vis[kx][ky]=0;
		}
	}
	
}
int main(){
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m;++i){
		for(int j=1;j<=n;++j){
			scanf("%d",&a[i][j]);
		}
	}
	scanf("%d%d",&qx,&qy);
	scanf("%d%d",&zx,&zy);
	anx[0]=qx;
	any[0]=qy;
	vis[qx][qy]=1;
	dfs(qx,qy,0);
	if(ans==0) cout<<-1;
	return 0;
}
In:
5 6
1 0 0 1 0 1
1 1 1 1 1 1
0 0 1 1 1 0
1 1 1 1 1 0
1 1 1 0 1 1
1 1
5 6
Out:
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(2,5)->(2,4)->(3,4)->(3,3)->(4,3)->(4,4)->(4,5)->(5,5)->(5,6)
2022/4/16 12:00
加载中...