[CCF] 201412-2 Z字形扫描
题面:
直接模拟即可
我的代码
#include<bits/stdc++.h>
using namespace std;
int a[520][520],n;
void solve()
{
int x=1,y=1;
printf("%d",a[x][y]);
while(1)
{
if(x==1&&y==1)
{
if(n==1) break;
else
{
printf(" %d",a[x][++y]);
while(x<n&&y>1)
{
printf(" %d",a[++x][--y]);
}
continue;
}
}
if(x==n&&y==n) break;
if(x==1)
{
if(y==n)
{
if(x<n) printf(" %d",a[++x][y]);
while(x<n&&y>1)
{
printf(" %d",a[++x][--y]);
}
}
else
{
printf(" %d",a[x][++y]);
while(x<n&&y>1)
{
printf(" %d",a[++x][--y]);
}
}
continue;
}
else if(x==n)
{
printf(" %d",a[x][++y]);
while(x>1&&y<n)
{
printf(" %d",a[--x][++y]);
}
}
else if(y==1)
{
if(x<n) printf(" %d",a[++x][y]);
while(x>1&&y<n)
{
printf(" %d",a[--x][++y]);
}
}
else if(y==n)
{
if(x<n) printf(" %d",a[++x][y]);
while(x<n&&y>1)
{
printf(" %d",a[++x][--y]);
}
}
}
puts("");
}
int main()
{
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&a[i][j]);
solve();
return 0;
}