35分求调
  • 板块P1238 走迷宫
  • 楼主MuLinnnnn
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/4 15:57
  • 上次更新2023/10/23 23:07:33
查看原帖
35分求调
757040
MuLinnnnn楼主2023/3/4 15:57
#include <iostream>
#include <cstdio>
using namespace std;
int n,m;
int Sx,Sy,Fx,Fy;
int mapp[20][20];
int linex[405],liney[405];
int book[20][20];
int gx[4] = {0,-1,0,1};
int gy[4] = {-1,0,1,0};
bool flag = false;

void dfs(int x,int y,int step){
	if(x == Fx && y == Fy){
		flag = true;
		printf("(%d,%d)",Sx,Sy);
//		printf("->(%d,%d)",linex[1],liney[1]);
		for(int i = 1; i < step; ++i){
			printf("->(%d,%d)",linex[i],liney[i]);
		}
		putchar('\n');
		return ;
	}
	if(step > 1145){
		return ;
	}
	for(int i = 0; i <= 3; ++i){
		int nx = x + gx[i];
		int ny = y + gy[i];
		if(nx < 1 || nx > n || ny < 1 || ny > m || mapp[nx][ny] == 0 || book[nx][ny] == 1){
			continue;
		}
		book[nx][ny] = 1;
		linex[step] = nx , liney[step] = ny; 
		dfs(nx,ny,step + 1);
		book[nx][ny] = linex[step] = liney[step] = 0;
	}
}

int main(){
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= n; ++i){
    	for(int j = 1; j <= m; ++j){
    		scanf("%d",&mapp[i][j]);
		}
	}
	scanf("%d%d%d%d",&Sx,&Sy,&Fx,&Fy);
	dfs(Sx,Sy,1);
	if(!flag){
		printf("-1");
	}
	return 0;
}

rt

2023/3/4 15:57
加载中...