社区讨论
30分 只过了1 2 5 为什么呢
P1238走迷宫参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mi6ha07d
- 此快照首次捕获于
- 2025/11/20 04:51 4 个月前
- 此快照最后确认于
- 2025/11/20 04:51 4 个月前
CPP
#include<iostream>
using namespace std;
int m,n;
int map[20][20];
int a[100][3];//当前所在位置
int vis[20][20];
int dx[5]={0,0,1,0,-1};
int dy[5]={0,1,0,-1,0};
int sx,sy,fx,fy;
int num;
void print(int step)
{
for(int i=1;i<=step-1;i++)
{
cout<<"("<<a[i][1]<<","<<a[i][2]<<")"<<"->";
}
cout<<"("<<fx<<","<<fy<<")"<<endl;
}
void dfs(int step)
{
if(a[step-1][1]==fx && a[step-1][2]==fy)
{
num++;
print(step-1);
}
else
for(int i=1;i<=4;i++)
{
int x=a[step-1][1]+dx[i];
int y=a[step-1][2]+dy[i];
if(x>=1 && x<=n && y>=1 && y<=m && vis[x][y]==0 && map[x][y]==1)
{
vis[x][y]=1;
a[step][1]=x;
a[step][2]=y;
dfs(step+1);
vis[x][y]=0;
}
}
}
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>map[i][j];
cin>>sx>>sy>>fx>>fy;
a[1][1]=sx;a[1][2]=sy;
vis[sx][sy]=1;
dfs(2);
if(num==0) cout<<"-1";
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...