打印回环矩阵

打印

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;
}
出自datakv
原文地址:https://www.cnblogs.com/datakv/p/5709118.html