60分求助,输出顺序一直不对?
  • 板块P1238 走迷宫
  • 楼主方杰123
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/8/8 20:22
  • 上次更新2023/11/6 20:54:51
查看原帖
60分求助,输出顺序一直不对?
234356
方杰123楼主2020/8/8 20:22
#include<iostream>
#include<cstdio>
using namespace std;
int ny[5]={0,0,1,0,-1};
int nx[5]={0,-1,0,1,0};
int n,m,fx,fy,lx,ly,flag=0;
int maps[20][20],book[20][20];
int cc[4000][2],k=2;
void print()
{
	cout<<"("<<fx<<","<<fy<<")"<<"->";
	for(int i=2;i<=k-2;i++)
		cout<<"("<<cc[i][1]<<","<<cc[i][2]<<")"<<"->";
	cout<<"("<<cc[k-1][1]<<","<<cc[k-1][2]<<")"<<endl;
	return;
}
void dfs(int x,int y)
{
	if(x==lx && y==ly)
	{
		print();
		flag=1;
		return;
	}
	for(int i=1;i<=4;i++)
	{
		if(book[x+nx[i]][y+ny[i]]==0 && maps[x+nx[i]][y+ny[i]]==1)
		{
			cc[k][1]=x+nx[i];cc[k][2]=y+ny[i];
			k++;
			book[x+nx[i]][y+ny[i]]=1;
			dfs(x+nx[i],y+ny[i]);
			k--;
			book[x+nx[i]][y+ny[i]]=0;
	    }
	}
	return;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>maps[i][j];
		}
	}
	cin>>fx>>fy;
	book[fx][fy]=1;
	cin>>lx>>ly;
	dfs(fx,fy);
	if(flag==0)
	{
		cout<<"-1";
	}
	return 0;
}
2020/8/8 20:22
加载中...