#include<iostream>
using namespace std;
void display(int n,int a[][10])
{
//用变量 s 控制路径拐弯之后到下一次拐角之间的路径长度,变量 i 控制下一个位置的行号,s-i 控制下一个位置的列号,d 控制路径方向(向下走还是向上走),n 控制下一个要填的数字
int i=0,s=0,d=-1;
while(n>=1)
{
int cnt=0;
while(cnt<=s)
{
a[i][s-i]=n--;
cnt++;
i+=d;
}
s++;
d=-d;
i=d>0?0:s;
}
for(int j=0;j<10;j++)
{
if(j!=0)
cout<<endl;
for(int k=0;k<10;k++)
{
if(a[j][k]!=0)
cout<<a[j][k]<<" ";
}
}
}
int main()
{
int n;
int a[10][10]={0};
cin>>n;
display(n,a);
return 0;
}
结果: