zigzag数组
2013-06-08 10:19
155 查看
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。
对于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。
相关文章推荐
- zigzag数组:输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组
- zigzag数组
- Topcoder:Zigzag 最长的大小交替子数组
- zigzag数组,螺旋数组生成
- zigzag数组(蛇形数组)C++实现
- 求zigzag数组矩阵
- Zigzag数组 -- 面试宝典
- 【第八章】zigzag数组输出
- 面试例题:输入n,求一个n x n矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现? (中国台湾著名硬件公司2007年11月面试题)
- Zigzag数组的初始化
- zigzag数组
- zigzag数组和螺旋数组
- Zigzag数组
- 输入n,求一个n×n矩阵,规定矩阵沿45度递增,形成zigzag数组
- 对面试题“输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?”的理解
- 用c++实现一个n*n矩阵,矩阵沿着45度递增,形成zigzag数组
- n*n的ZigZag数组
- zigzag数组,螺旋数组生成
- 程序员面试宝典:输出zigzag数组
- zigzag数组