我一直在考虑这个问题,我只是想不出一种方法来填充一个向外螺旋的矩阵,这样我就可以做到以下几点:
转动这个:1 2 3 4 5 ... n
至
21 22 23 24 25 26
20 07 08 09 10 27
19 06 01 02 11 28
18 05 04 03 12 29
17 16 15 14 13 30
...n
我的问题是算法本身,但如果你可以用 C++ 来代替伪代码,那就更好了。
这是我为测试而编写的一些代码,但我真的不知道如何才能做到这一点。
#include <stdio.h>
#include <string>
using namespace std;
int main() {
//int n = 5;
int spiral[5][6];
for (int i = 0; i < 5; i++)
for (int u = 0; u < 6; u++)
spiral[i][u] = 0;
spiral[2][2] = 1;
string direction = "right";
for (int i = 2; i < 5; i++) {
for (int u = 2; u < 6; u++) {
if (direction == "right") {
spiral[i][u + 1] = spiral[i][u] + 1;
direction = "down";
}
}
}
for (int i = 0; i < 5; i++) {
for (int u = 0; u < 6; u++) {
printf("%02d ", spiral[i][u]);
}
printf("\n");
}
return 0;
}
谢谢!