0分求助
  • 板块P1238 走迷宫
  • 楼主M213
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/4/30 12:19
  • 上次更新2023/10/28 02:36:09
查看原帖
0分求助
556815
M213楼主2022/4/30 12:19

rt

#include <bits/stdc++.h>
using namespace std;

int n, m, isOk, zdx, zdy, qdx, qdy;
char a[25][25];
bool vis[25][25];
int anx[20*20],any[20*20];
int dx[5]={1,-1,0,0};
int dy[5]={0,0,-1,1};
void dfs(int x, int y, int b) {
    if(x == zdx && y == zdy){
		isOk = true;
		for(int i=0;i<b;i++){
			cout<<"("<<anx[i]<<","<<any[i]<<")"<<"->";
		}
		cout<<"("<<anx[b]<<","<<any[b]<<")"<<"\n";
		return;
    }
    for(int i=0;i<4;i++){
    	int kx=x+dx[i];
    	int ky=y+dy[i];
		if(kx>=1&&kx<=n&&ky>=1&&ky<=m&&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(void) {
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
        cin >> (a[i] + 1);
    cin>>qdx;
	cin>>qdy;
	cin>>zdx;
	cin>>zdy;
	dfs(qdx,qdy,0);
    if(!isOk)
        cout << "-1" << endl;
    return 0;
}
2022/4/30 12:19
加载中...