35pts 求调
查看原帖
35pts 求调
1285008
Genshin_Balladeer楼主2024/9/16 09:18
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,m;
int min=10000;
int map[10001][10001];
int ex,ey,sx,sy;
int dx[]={0,0,0,1,-1};
int dy[]={0,1,-1,0,0};
int ans=0;
bool vis[5000][5000];
int wayx[5000];
int wayy[5000];
void dfs(int x,int y,int step){
	for(int i=1;i<=4;i++){
		int tx=x+dx[i];
		int ty=y+dy[i];
		if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&map[tx][ty]!=0&&!vis[tx][ty]){   
			vis[tx][ty]=true;
			wayx[step]=tx; 
			wayy[step]=ty;
			if(tx==ex&&ty==ey){
				cout<<"(1,1)->";
				for(int i=1;i<step;i++){
					cout<<'('<<wayx[i]<<","<<wayy[i]<<")->";	
				}
				cout<<'('<<wayx[step]<<","<<wayy[step]<<")";
				cout<<endl;
				ans++;
			}else{
			dfs(tx,ty,step+1);  
			}
			vis[tx][ty]=false;   
		}
	}
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>map[i][j];
		}
	} 
	cin>>sx>>sy>>ex>>ey;
	vis[sx][sy]=true;
	dfs(sx,sy,1);
	if(ans==0){
		cout<<-1;
	}
	return 0;
}
2024/9/16 09:18
加载中...