作者在 2020-03-03 09:30:05 发布以下内容
void 蛇形矩阵(bool 正 = true)
{//缘由https://bbs.bccn.net/viewthread.php?tid=499489&page=1&extra=#pid2720322
int n, x, y;
cin >> n;
x = y = n / 2;
int a[50][50]{{ 0 }};
int num = 1, 上左 = x - 1, 下右 = x + 1, 向 = 1;
a[x][y] = num;
while (num<n*n)
{
if (向)
{
if (正 ? y > 上左:y < 下右)
正 ? a[x][--y] = ++num : a[x][++y] = ++num;
else if (x > 上左)
a[--x][y] = ++num;
else
向 = 0;
}
else
{
if (正 ? y < 下右 : y > 上左)
正 ? a[x][++y] = ++num : a[x][--y] = ++num;
else if (x < 下右)
a[++x][y] = ++num;
else
++下右, --上左, 向 = 1;
}
}
x = y = 0;
while (a[x][0])
{
if (a[x][y])
cout << (a[x][y]<10 ? " " : a[x][y]<100 ? " " : a[x][y]<1000 ? " " : "") << a[x][y++] << " ";
else
++x, y = 0, cout << endl;
}
}
蛇形矩阵();
蛇形矩阵(false);