#include<bits/stdc++.h>
using namespace std;
int a[10][10]={0};
int main()
{
int n;
cin>>n;
int tempn=n;
int num=0;//一直到2n-2,表示第几行斜线
int now=0;//一直到n^2-1
int first=1;//表明还是上半个矩阵
//下半个矩阵是不同的规则
while(tempn--){
for(int i=0;i<num+1;i++)//控制有几个数字
{
if(num%2!=0){//横坐标为i
a[i][num-i]=now;
}
else{
a[num-i][i]=now;
}
now++;
}
num++;
}//跳出循环后num和now都可以直接使用
tempn=n-1;
int starti=1;//从哪个下标开始
while(tempn--)
{
int tempi=starti;
for(int i=0;i<2*n-1-num;i++)//表示个数
{
if(num%2!=0)
{
a[tempi][num-tempi]=now;
}
else{
a[num-tempi][tempi]=now;
}
now++;
tempi++;
}
num++;
starti++;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}cout<<endl;
}
return 0;
}
蛇形数组填充
最新推荐文章于 2024-07-24 22:13:06 发布