模拟
暴力枚举
C++ 代码
与y总代码不同就是先输出了a[1][1]
思路是一样的 u1s1 y总永远的神
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n, a[510][510];
cin >> n;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
scanf("%d", &a[i][j]);
// 这里先将第一行第一列元素输出出来
// 与y总的有点小区别
cout << a[1][1] << " ";
for (int i = 2; i <= 2 * n; i ++ )
{
// 奇数从下到上
if (i % 2 != 0)
{
for (int j = i; j >= 1; j -- )
{
if (j >= 1 && j <= n && i - j + 1 >= 1 && i - j + 1 <= n)
printf("%d ", a[j][i - j + 1]);
}
}
// 偶数从上到下
else
{
for (int j = 1; j <= i; j ++ )
{
if (j >= 1 && j <= n && i - j + 1 >= 1 && i - j + 1 <= n)
printf("%d ", a[j][i - j + 1]);
}
}
}
return 0;
}