为啥50pts呢?!
查看原帖
为啥50pts呢?!
1070708
Caged_Bird楼主2023/10/11 19:02
#include<bits/stdc++.h>
using namespace std;
struct node{
	int a,b;
}z[250];
int mp[15][15],used[15][15],n,m,sx,sy,ex,ey,dx[4]={0,-1,0,1},dy[4]={-1,0,1,0},flag;
void prt(int l){
	flag=1;
	cout<<'('<<z[1].a<<','<<z[1].b<<')';
	for(int i=2;i<l;i++)cout<<"->"<<'('<<z[i].a<<','<<z[i].b<<')';
	cout<<endl;
	return;
}
void dfs(long long step,int x0,int y0){
	if(x0==ex&&y0==ey){prt(step);return;}
	for(int i=0;i<=3;i++){
		int x=x0+dx[i],y=y0+dy[i];
		if(!used[x][y]&&mp[x][y]==1&&x<=n&&x>=1&&y<=m&&y>=1){
			used[x][y]=1;
			z[step].a=x;
			z[step].b=y;
			dfs(step+1,x,y);
			used[x][y]=0;
		}
	}
	return;
} 
int main(){
	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;
	used[sx][sy]=1;
	z[1].a=sx;
	z[1].b=sy;
	dfs(2,1,1);
	if(flag==0)cout<<-1;
	return 0;
}

2023/10/11 19:02
加载中...