z字型扫描
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n+1][n+1];//序号从1-n,0出空着,所占内存大小n+1;
int i=1,j=1; //ij在for外面声明,否则会出现g++错误
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
i=1;j=1;
cout<<a[i][j]<<" ";
while(1)
{
if(i==1)
{
cout<<a[i][++j]<<" ";
if(j==n) break;
do
{
cout<<a[++i][--j]<<" ";
}while(j!=1&&i!=n);
}
if(j==1)
{
cout<<a[++i][j]<<" ";
if(i==n) break;
do
{
cout<<a[--i][++j]<<" ";
}while(i!=1&&j!=n);
}
}
if(i==n)
{
do
{
cout<<a[--i][++j]<<" ";
}while(i!=1&&j!=n);
}
else
{
do
{
cout<<a[++i][--j]<<" ";
}while(i!=n&&j!=1);
}
while(1)
{
if(i==n)
{
cout<<a[i][++j]<<" ";
if(j==n)break;
do
{
cout<<a[--i][++j]<<" ";
}while(i!=1&&j!=n);
}
if(j==n)
{
cout<<a[++i][j]<<" ";
if(i==n) break;
do
{
cout<<a[++i][--j]<<" ";
}while(i!=n&&j!=1);
}
}
}