20分求救
查看原帖
20分求救
428690
Astatinear楼主2021/6/16 16:25

深搜20分

#include<bits/stdc++.h>
using namespace std;
int pathx[20],pathy[20];
int n,m;
int a[20][20];
int bj[20][20];
bool output;
int x,y,x2,y2;
void print(int f)
{
	printf("(%d,%d)",pathx[1],pathy[1]);
	for(int i=2;i<=f;++i)
	{
		printf("->(%d,%d)",pathx[i],pathy[i]);
	}
	cout<<endl;
	return;
}
void dfs(int deep,int x,int y)
{
	if(x>n||x<1||y>m||y<1||bj[x][y]==1||a[x][y]==0)
	{
		return;
	}
	if(x==x2&&y==y2)
	{
		print(deep);
		output=1;
		return; 
	}
	bj[x][y]=1;
	pathx[deep]=x,pathy[deep]=y;
	dfs(deep+1,x,y-1);
	dfs(deep+1,x-1,y);
	dfs(deep+1,x,y+1);
	dfs(deep+1,x+1,y);
	bj[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>>x>>y>>x2>>y2; 
	dfs(1,x,y);
	if(output==0)
	{
		cout<<-1<<endl;
	} 
} 
2021/6/16 16:25
加载中...