55分求教
  • 板块P1238 走迷宫
  • 楼主Hbh1617
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/21 17:14
  • 上次更新2025/7/21 22:36:09
查看原帖
55分求教
1286360
Hbh1617楼主2025/7/21 17:14
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; 
ll s1,s2,t1,t2;
ll n,m;
ll a[20][20];
ll dx[]={0,-1,0,1};
ll dy[]={-1,0,1,0};
ll ans[10000010][2];
ll vis[100][100],f;	
void dfs(ll x,ll y,ll t){
	ans[t][0]=x;ans[t][1]=y;
	if(x==t1&&y==t2){
		for(ll i=1;i<=t-1;i++){
			cout<<'('<<ans[i][0]<<','<<ans[i][1]<<')'<<"->";
		}
		f=1;
		printf("(%d,%d)\n",t1,t2);
		return;
	}
	for(ll i=0;i<4;i++){
		ll tx=x+dx[i],ty=y+dy[i];
		if(tx<1||ty<1||tx>n||ty>m||vis[tx][ty]||!a[tx][ty])continue;
		vis[tx][ty]=1;
		dfs(tx,ty,t+1);
		vis[tx][ty]=0;
	}
}
int main(){
	cin>>n>>m;
	for(ll i=1;i<=n;i++){
		for(ll j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	cin>>s1>>s2>>t1>>t2;
	vis[1][1]=1;
	dfs(s1,s2,1);
	if(!f)cout<<-1;
	return 0;
}
2025/7/21 17:14
加载中...