这是代码
# include <bits/stdc++.h>
using namespace std;
struct value
{
int x_axis, y_axis;
};
int n, m, x, y;
int vis[405][405];
int x_next1[2] = {1, -1}, y_next1[2] = {2, -2};
queue <value> q;
int main(void)
{
memset(vis, -1, sizeof(vis));
cin >> n >> m >> x >> y;
vis[x][y] = 0;
value v, temp;
temp = {x, y};
q.push(temp);
while(!q.empty())
{
v = q.front();
q.pop();
for (int i = 0; i <= 1; i ++)
for (int f = 0; f <= 1; f ++)
{
int X, Y;
X = v.x_axis + x_next1[i];
Y = v.y_axis + y_next1[f];
if (vis[X][Y] == -1 && (X > 0 && X <= n) && (Y > 0 && Y <= m))
{
temp = {X, Y};
q.push(temp);
vis[X][Y] = vis[v.x_axis][v.y_axis] + 1;
}
}
for (int i = 0; i <= 1; i ++)
for (int f = 0; f <= 1; f ++)
{
int X, Y;
X = v.x_axis + y_next1[f];
Y = v.y_axis + x_next1[i];
if (vis[X][Y] == -1 && (X > 0 && X <= n) && (Y > 0 && Y <= m))
{
temp = {X, Y};
q.push(temp);
vis[X][Y] = vis[v.x_axis][v.y_axis] + 1;
}
}
}
for (int i = 1; i <= n; i ++)
{
for (int f = 1; f <= m; f ++)
cout << vis[i][f] << " ";
cout << endl;
}
return 0;
}
最神奇的是,全错之后,我下了一组数据,
输入:
6 9 1 1
输出:
0 3 2 3 2 3 4 5 4
3 4 1 2 3 4 3 4 5
2 1 4 3 2 3 4 5 4
3 2 3 2 3 4 3 4 5
2 3 2 3 4 3 4 5 4
3 4 3 4 3 4 5 4 5
我的答案竟然一模一样,但是测试为什么全Wa? 蒟蒻求助