#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