#include<stdio.h>
int main()
{
int n,i,j,count=0,k;// a[0][0] a[0][1] a[0][2] a[0][3]
int a[20][20]={0};// a[1][1] a[1][2] a[1][3]
scanf("%d",&n);//右上 a[2][2] a[2][3]
for(i=0;i<n;i++)// a[3][3]
{// k=0,是因为每次都要从上往下数
for(j=n-1-i,k=0;k<=i,j<=n-1;j++,k++)//j<=n-1可以不写,只写一个限制条件就可以
{
a[k][j]=++count;
}
}
for(i=1;i<=n-1;i++)//左下 a[1][0]
{ // a[2][0] a[2][1] 从上往下看
for(j=0,k=i;k<=n-1;j++,k++) // a[3][0] a[3][1] a[3][2] 可以发现i的限制条件就是n-1;但是按照这个方向,j就看不出限制条件
{ // 从下往上 i=n-1;i>=1;i-- j=算了这个不行,count不连续
a[k][j]=++count;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
return 0;
}
n*n的回型矩阵,1<=n<=18;
输入:一个n;
输出:n行,每行包括n个正整数,每个数字的场宽为4(右对齐%4d即可)
样例:
输入5
输出
11 7 4 2 1
16 12 8 5 3
20 17 13 9 6
23 21 18 14 10
25 24 22 19 15