输出为什么只到(5,5)啊,悬关
  • 板块P1238 走迷宫
  • 楼主wym_2012
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/12/3 09:44
  • 上次更新2023/12/3 11:13:49
查看原帖
输出为什么只到(5,5)啊,悬关
929529
wym_2012楼主2023/12/3 09:44

rt

#include<bits/stdc++.h>
using namespace std;
int to[4][2]={0,-1,-1,0,0,1,1,0};
bool vis[19][19];
char mp[19][19];
int n,m;
struct node{
	int x,y;
};
vector<node>xf;
node u;
int sx,sy,fx,fy;
int flag;
void dfs(int x,int y)
{
	u.x=x,u.y=y;
	if(u.x==fx&&u.y==fy)
	{
		flag=1;
		for(int i=0;i<xf.size();i++)
		{
			if(i==0)
				cout<<"("<<xf[i].x<<","<<xf[i].y<<")";
			else
				cout<<"->("<<xf[i].x<<","<<xf[i].y<<")";
		}
		cout<<endl;
		return;
	}
	vis[u.x][u.y]=true;
	xf.push_back(u);
	for(int i=0;i<4;i++)
	{
		int tx,ty;
		tx=x+to[i][0];
		ty=y+to[i][1];
		if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&!vis[tx][ty]&&mp[tx][ty]!='0')
		{
			dfs(tx,ty);
			vis[x][y]=false;
			xf.pop_back();
		}
	}
}
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>>fx>>fy;
	dfs(sx,sy);
	if(flag==0)
		cout<<"-1";
	return 0;
}
2023/12/3 09:44
加载中...