首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问怎么用zigzag方式扫描一个N*N数组

2013-01-08 
请教如何用zigzag方式扫描一个N*N数组网上多是生成zigzag数组,没找到扫描方法,哪位大哥给点提示呗,C或C++

请教如何用zigzag方式扫描一个N*N数组
网上多是生成zigzag数组,没找到扫描方法,哪位大哥给点提示呗,C或C++吧,不胜感激
[解决办法]
仅供参考:

//n=1,
//1
//n=2,
//12
//34
//n=3,
//126
//357
//489
//n=4,
//  1  2  6  7
//  3  5  8 13
//  4  9 12 14
// 10 11 15 16
//n=5,
//  1  2  6  7 15
//  3  5  8 14 16
//  4  9 13 17 22
// 10 12 18 21 23
// 11 19 20 24 25
//之字形
//模仿蚂蚁爬的过程
#include <stdio.h>
#define MAXN 9
int m[MAXN][MAXN];
int i,x,y,dx,dy,n,n2,k;
void main() {
    for (i=1;i<=MAXN;i++) {
        n2=i*i;
        k=1;
        if (n2>9) k=3;
        x=0;
        y=0;
        dx=1;
        dy=-1;
        n=1;
        m[y][x]=n;
        while (1) {
            if (n>=n2) break;
            n++;
            x=x+dx;
            y=y+dy;
            if (y>=i) {
                x=x+2;
                y=i-1;
                dx=1;
                dy=-1;
            }
            if (x>=i) {
                y=y+2;
                x=i-1;
                dx=-1;
                dy=1;
            }
            if (y<0) {
                y=0;
                dx=-1;
                dy=1;
            }
            if (x<0) {
                x=0;
                dx=1;


                dy=-1;
            }
            m[y][x]=n;
        }
        for (y=0;y<i;y++) {
            for (x=0;x<i;x++) {
                printf("%*d",k,m[y][x]);
            }
            printf("\n");
        }
        printf("-------------%d--------------\n",i);
    }
}
//1
//-------------1--------------
//12
//34
//-------------2--------------
//126
//357
//489
//-------------3--------------
//  1  2  6  7
//  3  5  8 13
//  4  9 12 14
// 10 11 15 16
//-------------4--------------
//  1  2  6  7 15
//  3  5  8 14 16
//  4  9 13 17 22
// 10 12 18 21 23
// 11 19 20 24 25
//-------------5--------------
//  1  2  6  7 15 16
//  3  5  8 14 17 26
//  4  9 13 18 25 27
// 10 12 19 24 28 33
// 11 20 23 29 32 34
// 21 22 30 31 35 36
//-------------6--------------
//  1  2  6  7 15 16 28
//  3  5  8 14 17 27 29
//  4  9 13 18 26 30 39
// 10 12 19 25 31 38 40
// 11 20 24 32 37 41 46
// 21 23 33 36 42 45 47
// 22 34 35 43 44 48 49
//-------------7--------------
//  1  2  6  7 15 16 28 29
//  3  5  8 14 17 27 30 43
//  4  9 13 18 26 31 42 44
// 10 12 19 25 32 41 45 54
// 11 20 24 33 40 46 53 55
// 21 23 34 39 47 52 56 61
// 22 35 38 48 51 57 60 62
// 36 37 49 50 58 59 63 64
//-------------8--------------
//  1  2  6  7 15 16 28 29 45
//  3  5  8 14 17 27 30 44 46
//  4  9 13 18 26 31 43 47 60
// 10 12 19 25 32 42 48 59 61
// 11 20 24 33 41 49 58 62 71
// 21 23 34 40 50 57 63 70 72
// 22 35 39 51 56 64 69 73 78
// 36 38 52 55 65 68 74 77 79


// 37 53 54 66 67 75 76 80 81
//-------------9--------------

热点排行