35pts
查看原帖
35pts
1286053
Nostopathy楼主2024/5/1 13:52
#include<bits/stdc++.h>
using namespace std;
int a[23][23],s[23][23],n,m,bx,by,ex,ey;
const string intstr[16]={"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"};
bool flag;
const int d[4][2]={{0,-1},{-1,0},{0,1},{1,0}};
void dfs(int bx,int by,string ans){
	if(bx==ex&&by==ey){cout<<ans<<'\n';flag=1;}
	for(int i=0;i<4;++i){
		int x=bx+d[i][0],y=by+d[i][1];
		if(a[x][y]==1&&s[x][y]==0){
			s[x][y]=s[bx][by]+1;
			dfs(x,y,ans+"->"+"("+intstr[x]+","+intstr[y]+")");
			s[x][y]=0;
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)cin>>a[i][j];
	cin>>bx>>by>>ex>>ey;
	dfs(bx,by,"("+intstr[bx]+","+intstr[by]+")");
	if(!flag)cout<<-1<<'\n';
}

quq

2024/5/1 13:52
加载中...