打印
void PrintSpiralArray(int n) { int * * allbit = new int* [n]; for (int i = 0; i < n; ++ i) allbit[i] = new int[n]; int _x = (n - 1) / 2; int _y = (n - 1) / 2; int tofill = 1; allbit[_x][_y] = tofill ++; bool flag(true); for (int i = 2; i <= n; ++i) { if (flag) { allbit[_x][++ _y] = tofill ++; for (int j = 0; j < i - 1; ++ j) allbit[++ _x][_y] = tofill ++; for (int j = 0; j < i - 1; ++ j) allbit[_x][-- _y] = tofill ++; flag = false; } else { allbit[_x][-- _y] = tofill ++; for (int j = 0; j < i - 1; ++ j) allbit[-- _x][_y] = tofill ++; for (int j = 0; j < i - 1; ++ j) allbit[_x][++ _y] = tofill ++; flag = true; } } for (int i = 0; i < n; ++ i) { for (int j = 0; j < n; ++ j) cout << allbit[i][j] << " "; cout << endl; } for (int i = 0; i < n; ++ i) delete[] allbit[i]; delete[] allbit; }
测试
#include <iostream> using namespace std; int main() { PrintSpiralArray(7); return 0; }