60分蒟蒻求助大佬
  • 板块P1238 走迷宫
  • 楼主hanyr
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/3/21 16:48
  • 上次更新2023/10/28 06:00:42
查看原帖
60分蒟蒻求助大佬
692215
hanyr楼主2022/3/21 16:48
#include<bits/stdc++.h>
using namespace std;
int m,n;
const int N=100;
int a[N][N],p[N],p1[N],step=0,ax,ay,flag=0;
bool v[N][N];
//typedef pair<int,int> pii;
//pii q[N][N];
void dfs(int x,int y){
	if(x==ax&&y==ay){
		for(int i=0;i<step;i++)
		cout<<"("<<p[i]<<","<<p1[i]<<")"<<"->"; //输出中途步骤;
    cout<<"("<<ax<<","<<ay<<")"<<endl;flag=1;return;
	}
	int dx[4]={-1,0,1,0};
	int dy[4]={0,1,0,-1};
	for(int k=0;k<4;k++){
	if(!v[x+dx[k]][y+dy[k]]&&a[x+dx[k]][y+dy[k]]){
		p[step]=x; 
		p1[step]=y;
		step++;
		//cout<<p[step]<<" ";
		v[x][y]=true;
		dfs(x+dx[k],y+dy[k]);
		v[x][y]=false;
		step--;
	}}
}
int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++)
	for(int j=1;j<=n;j++)
	cin>>a[i][j];
	int x,y;
	cin>>x>>y;
	cin>>ax>>ay;
	v[x][y]=true;
	dfs(x,y);
	if(flag==0){
		cout<<"-1"<<endl;
	}
	return 0;
} 
2022/3/21 16:48
加载中...