#include<stdio.h>
int main()
{
int n,i,j,cnt,flag,flag2; //n为题目要求矩阵大小,i为行,j为列,cnt表示切边数,flag用于区分奇偶数的cnt,flag2 用于区分上下半边
scanf("%d",&n);
int num[n][n];//存数组
int fake[2*n]={0};//每条切边的数字个数
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&num[i][j]);
fake[i+j]+=1;
}
}
printf("%d ",num[0][0]);
i=0;j=1;flag=flag2=1;cnt=1;
while(i+j<(n-1)*2){
printf("%d ",num[i][j]);
fake[cnt]-=1;
if(fake[cnt]==0){
cnt++;flag*=-1;
if((i>j&&flag2==1)||(i<j&&flag2==-1)){i+=1;}
else {j+=1;}
if(cnt==n-1){flag2=-1;}
continue;
}
i+=flag;j-=flag;continue;
}
printf("%d",num[n-1][n-1]);
}
XDOJ z字扫描
最新推荐文章于 2023-11-26 12:35:52 发布