AcWing 3208. Z字形---枚举每一条对角线(简单易懂)
原题链接
简单
作者:
那个小谁
,
2021-03-08 22:21:12
,
所有人可见
,
阅读 645
题目描述
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
枚举对角线
由样例可以找出规律,该题只是将每一条对角线输出;
所以我们可以枚举每一条对角线,只是当对角线为偶数或奇数时
输出顺序不同
代码如下
#include<iostream>
#include<algorithm>
using namespace std;
int z[550][550];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>z[i][j];
for(int i=1;i<=2*n;i++)//枚举每一条对角线
{
if(i%2==0)
{int x=1,y=i;
while(y>n&&i>n)x++,y--;//将下三角多余部分去掉
while(y>=1&&x<=n)//防止越界
{
cout<<z[x++][y--]<<' ';//按照对角线输出
}
}
else
{
int x=i,y=1;
while(x>n&&i>n)x--,y++;
while(x>=1&&y<=n)//防止越界
{
cout<<z[x--][y++]<<' ';
}
}
}
}