30分求调,下载了几个都对得上
查看原帖
30分求调,下载了几个都对得上
1053893
LongBlast500楼主2025/7/18 19:55
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
int cnt;
int n,m,mp[1145][1145],sx,sy,ex,ey,pathx[1145],pathy[1145];
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
void print(int depth){
	for(int i=1;i<depth;i++){
		cout<<"("<<pathx[i]<<","<<pathy[i]<<")->";
	}
	cout<<"("<<pathx[depth]<<","<<pathy[depth]<<")\n";
}
void dfs(int x,int y,int depth){
	if(x==ex&&y==ey){
		cnt++;
		print(depth);
	}
	else{
		for(int i=0;i<4;i++){
			int nx=x+dx[i],ny=y+dy[i];
			if(mp[nx][ny]&&nx>=1&&nx<=n&&ny>=1&&ny<=m){
				mp[nx][ny]=0;
				pathx[depth+1]=nx;
				pathy[depth+1]=ny;
				dfs(nx,ny,depth+1);
				mp[nx][ny]=1;
			}
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>mp[i][j];
		}
	}
	cin>>sx>>sy>>ex>>ey;
	mp[sx][sy]=0;
	pathx[1]=sx; pathy[1]=sy;
	dfs(sx,sy,1);
	if(!cnt)cout<<-1<<endl;
	return 0;
}

2025/7/18 19:55
加载中...