求助大佬
查看原帖
求助大佬
475143
gaojian2007楼主2021/8/25 08:24
#include<iostream>
using namespace std;
int m,n,a[20][20],v[20][20],wx,wy,x2[20],y2[20],q=0;
int fx[5]={0,0,-1,0,1};
int fy[5]={0,-1,0,1,0};
void dfs(int x,int y,int c)
{
	if(x==wx&&y==wy)
	{
		q=1;
		for(int i=1;i<=c-1;i++)
		cout<<"("<<x2[i]<<","<<y2[i]<<")"<<"->";
		cout<<"("<<x<<","<<y<<")"<<endl;
		return ;
	}
	for(int i=1;i<=n;i++)
	{
		int nx=x+fx[i],ny=y+fy[i];
		if(nx<1||nx>m||ny<1||ny>n||a[nx][ny]==0||v[nx][ny]==1)continue;
		v[nx][ny]=1;
		x2[c]=x,y2[c]=y;
		dfs(nx,ny,c+1);
		v[nx][ny]=0;
	}
}
int main()
{
	int x,y;
	cin>>m>>n;
	for(int i=1;i<=m;i++)
	for(int j=1;j<=n;j++)
	cin>>a[i][j];
	cin>>x>>y>>wx>>wy;
	dfs(x,y,1);
	if(!q)cout<<-1;
	return 0;
} 
2021/8/25 08:24
加载中...