15分求调
查看原帖
15分求调
767863
封禁用户楼主2024/4/6 09:26

代码

#include<iostream>
#include<cstdio>
using namespace std;
int n,a[1010][1010],b[100010],c[100010],s=1,s1,m,o1,o2,p1,p2;
int dx[5]={0,0,-1,0,1};
int dy[5]={0,-1,0,1,0};
void dfs(int x,int y,int k)
{
	for(int i=1;i<=4;i++)
	{
		int xx=x+dx[i];
		int yy=y+dy[i];
		if(xx>0&&xx<=p1&&yy>0&&yy<=p2&&a[xx][yy]==1)
		{
			a[xx][yy]=0;
			b[k]=xx;
			c[k]=yy;
			if(xx==n&&yy==m)
			{
				cout<<"(1,1)";
				for(int i=1;i<=k;i++)
				{
					cout<<"->("<<b[i]<<','<<c[i]<<')'; 
					s1++;
				} 
				cout<<endl;
			}
			else
			{
				dfs(xx,yy,k+1);
			}
			a[xx][yy]=1;
			b[k]=0;
			c[k]=0;
		} 
	} 
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
		}
	}
	cin>>o1>>o2>>p1>>p2;
	a[o1][o2]=0;
	dfs(o1,o2,1);
	if(s1==0)
	{
		cout<<-1;
	}
	return 0;
} 


2024/4/6 09:26
加载中...