zigzag数组

ZigZag数组就是形如下图的,依次沿对角线增加和减小交替变换的数组,犹如一条蛇形线,又说是“之”字形数组


对于N*N的zigzag数组,可以分两部分输出:左上三角+对角线,  右下三角

1. 对于左上三角+对角线,我们可以按每一条递增的斜线填充,假如填充到第cross条斜线(从0开始计数),每一个待填充的a[i][j],都有i+j = cross。

且j, j的取值范围都是0-cross。

如果cross 是偶数,填充的顺序是从左下,到右上,即列号从0->cross;

如果cross是奇数,填充的顺序是从右上到左下,即行号是从0->cross;


2. 对于右下三角,情况则不同,

对角线是第N-1条斜线,所以对于对角线右下方,与之平行的对角线,我们看做是N- 2,N -3....条对角线

且对于每个带填充元素a[i][j]的行列取值 范围也不在是0-cross, 其下限都不能取到0,而依次是1,2,3,。。。,N-1

所以我们用一个变量limit记录这个下限。此时对于每个填充元素,a[i][j], i+j = limit+N-1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值