c++蛇形矩阵怎么输入

大一在校生 搜了网上了 有很多看不懂 这样老师肯定知道是抄的 麻烦大神们有没有简单易懂一点的程序 谢谢!!

img

#include <iostream>

using namespace std;

void snakeLikeMat(int **a, int n)
{
    int num = 1;
    int total = n*n;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            if (i % 2 == 0)
            {
                a[j][i - j] = num++;
            }
            else
            {
                a[i - j][j] = num++;
            }
        }

    }
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            if (i % 2 == 0)
            {
                a[n - 1 - j][n - 1 - i + j] = total--;
            }
            else
            {
                a[n - 1 - i + j][n - 1 - j] = total--;
            }
        }
    }
}


int main()
{

    int ha = 0;
    cin >> ha;
    int **a = new int*[ha];
    for (int i = 0; i < ha; i++)
    {
        a[i] = new int[ha];
    }
    snakeLikeMat(a, ha);
    for (int i = 0; i < ha; i++)
    {
        for (int j = 0; j < ha; j++)
        {
            cout << a[i][j] << "\t";
        }
        cout << endl;
    }
    for (int i = 0; i < ha; i++)
    {
        delete[] a[i];
    }
    delete[] a;
    return 0;
}

思路:
1.蛇形矩阵每行要显示那些数据必须先搞清楚;
2.以最后一行的字符数为每行要打印的总字符数,不足部分打印空格,右边一半空格不用打印;
3.每个数字中间都要打印一个空格。