有关于蛇形矩阵,但是没什么思路,不知如何下手

img

img


#include <iostream>
using namespace std;

int main()
{
    int N;
    cin >> N;
    int x = 1, y;
    for (int i = 0; i < N; ++i)
    {
        y = x;
        for (int j = 0; j < N - i; ++j)
        {
            cout << y << ' ';
            y += (i + 2 + j);
        }
        x += (i + 1);
        cout << endl;
    }
    return 0;
}

找下规律就好,观察数字之间关系

#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-i; j++)
        {
            cout << a[j][i] << "\t";
        }
        cout << endl;
    }
    for (int i = 0; i < ha; i++)
    {
        delete[] a[i];
    }
    delete[] a;
    return 0;
}

img