40分求调
  • 板块P1238 走迷宫
  • 楼主aqua__
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/11 18:05
  • 上次更新2024/3/11 20:12:39
查看原帖
40分求调
1086963
aqua__楼主2024/3/11 18:05
#include<bits/stdc++.h>

using namespace std;

const int N = 15;

int g[N][N];
int startx,starty,endx,endy;
int n,m;
int idx;
int ansx[N],ansy[N];
bool flag = false;

void dfs(int x,int y){
	g[x][y] = 0;
	int dx[4] = {0,-1,0,1},dy[4] = {-1,0,1,0};
	ansx[0] = startx,ansy[0] = starty;
	if(x == endx && y == endy){
		flag = true;
		for(int i = 0;i <= idx;i ++ ){
			cout << "(" << ansx[i] << "," << ansy[i] << ")";
			if(i != idx) cout << "->";	
		}
		puts("");
		return;	
	}
	
	for(int i = 0;i < 4;i ++ ){
		int a = x + dx[i],b = y + dy[i];
		if(g[a][b] && a >= 1 && a <= n && b >= 1 && b <= m){
			++ idx;
			ansx[idx] = a,ansy[idx] = b;
			g[a][b] = 0;
			dfs(a,b);
			g[a][b] = 1;
			idx --;
		}
	}
	
}

int main(){
	cin >> n >> m;
	for(int i = 1;i <= n;i ++ ){
		for(int j = 1;j <= m;j ++ ){
			cin >> g[i][j];
		}
	}
	cin >> startx >> starty >> endx >> endy;
	dfs(startx,starty);
	if(!flag) cout << -1;
	return 0;
}
2024/3/11 18:05
加载中...