题目描述
给定一个 n 行 m 列的迷宫,找出访问的单元格顺序,每次尝试按上、左、右、下的给定顺序移动。迷宫由0和1组成,其中1表示墙,0表示可以进入的有效单元格。我们的起始位置在左上角(0, 0)。
1 ≤ n,m ≤ 100
输入:
第一行是两个用空格分隔的整数 n 和 m,其中 n 是迷宫的行数,m 是迷宫的列数。
接下来的 n 行有 m 个用空格分隔的整数,表示墙或开放单元格。
输出:
一个 n x m 的矩阵,其中每个单元格表示单元格被访问的顺序。如果该单元格无法被访问,则将其放置为0。
示例输入:
3 4
0 0 0 0
1 0 1 0
0 0 0 0
示例输出:
1 2 3 4
0 9 0 5
10 8 7 6
我的代码
#include<bits/stdc++.h>
using namespace std;
int n,m,a[105][105],s[5]={0,0,-1,1,0},ss[5]={0,-1,0,0,1},num=1;
void f(int x,int y)
{
a[x][y]=num;
cout<<a[x][y]<<" ";
for(int i=1;i<=4;i++)
{
if(a[x+s[i]][y+ss[i]]!=0)
{
return ;
}
else
{
num++;
f(x+s[i],y+ss[i]);
num--;
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]==1) a[i][j]=-1;
}
}
f(1,1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==-1) a[i][j]=0;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
不知道为什么,输出很奇怪
请各位大佬看看有什么问题