社区讨论

输出为什么只到(5,5)啊,悬关

P1238走迷宫参与者 4已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@lpotmq3r
此快照首次捕获于
2023/12/03 09:46
2 年前
此快照最后确认于
2023/12/03 11:13
2 年前
查看原帖
rt
CPP
#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;
}

回复

10 条回复,欢迎继续交流。

正在加载回复...