社区讨论
输出为什么只到(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 条回复,欢迎继续交流。
正在加载回复...