文章目录
本题链接:201412-2 Z字形扫描
本博客给出本题截图:
C++
#include <iostream>
using namespace std;
const int N = 510;
int g[N][N];
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
cin >> g[i][j];
for (int i = 2; i <= 2 * n; i ++ )
if (i % 2 == 0)
{
for (int j = i - 1; j; j -- )
if (j >= 1 && j <= n && i - j >= 1 && i - j <= n)
cout << g[j][i - j] << ' ';
}
else
{
for (int j = 1; j < i; j ++ )
if (j >= 1 && j <= n && i - j >= 1 && i - j <= n)
cout << g[j][i - j] << ' ';
}
return 0;
}
总结
i
指的是横坐标和纵坐标的和,通过观察可以发现,在每一条的遍历过程中横纵坐标之和都是一个定值,注意区分奇数行的遍历和偶数行的遍历,两个式相反方向的