AcWing 3208. Z字形扫描
原题链接
简单
作者:
wjie
,
2021-02-15 21:25:26
,
所有人可见
,
阅读 426
斜着看,每一条斜线,奇偶交替找规律,确定斜线的起点,以及移动方向,然后,输出这条斜线的值
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 505;
int arr[N][N];
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
scanf("%d", &arr[i][j]);
for (int i = 0; i < 2*n-1; ++i)
{
// cout << i << endl;
int x = i, y = 0;
if (x >= n) y = x-n+1, x = n-1;
int dx = -1, dy = 1;
if (i & 1)
{
swap(x, y);
swap(dx, dy);
}
while (x >= 0 && x < n && y >= 0 && y < n)
{
// cout << x <<" " << y << endl;
printf("%d ", arr[x][y]);
x += dx;
y += dy;
}
}
return 0;
}