实现Z字数组的输出

#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;

int main() {
    int N;
    cin>>N;
    int A[100][100];
    for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
        {
            int s=i+j;
            if (s<N)
            {
                A[i][j]=s*(s+1)/2+(((i+j)%2==0)?j:i);
            }
            else
            {
                s=(N-1-i)+(N-1-j);
                A[i][j]=N*N-s*(s+1)/2-(N-(((i+j)%2==0)?j:i));
            }
        }
    for(int i=0;i<N;i++) {
        for (int j = 0; j < N; j++)
            cout <<setw(6)<<A[i][j] ;
        cout <<endl;
    }
    return 0;
}

输出结果:
8
0 1 5 6 14 15 27 28
2 4 7 13 16 26 29 42
3 8 12 17 25 30 41 43
9 11 18 24 31 40 44 53
10 19 23 32 39 45 52 54
20 22 33 38 46 51 55 60
21 34 37 47 50 56 59 61
35 36 48 49 57 58 62 63

    原文作者:Z字形编排问题
    原文地址: https://blog.csdn.net/zwz2011303359/article/details/69950436
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞