最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對(duì)一個(gè)數(shù)組進(jìn)行zig-zag重新排列

 更新時(shí)間:2013年03月06日 09:55:45   作者:  
本文介紹了“對(duì)一個(gè)數(shù)組進(jìn)行zig-zag重新排列”,需要的朋友可以參考一下

在看jpeg解碼,里面有對(duì)8x8數(shù)組進(jìn)行重排。里面直接提供了unzig表:

int unzig[] = {

0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
12, 19, 26, 33, 40, 48, 41, 34,
27, 20, 13, 6, 7, 14, 21, 28,
35, 42, 49, 56, 57, 50, 43, 36,
29, 22, 15, 23, 30, 37, 44, 51,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63,

};

然后自己寫(xiě)了個(gè)產(chǎn)生unzig表的程序。

:-)

 代碼如下:

復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef void (*fn)(int, int, int, int, void*);

printpos(int x, int y, int n, int i, void *arr)
{
//    printf("%2d%c", x+y*n, i%n==(n-1)?'\n':' ');
    int *a;

    a = (int*)arr;
    printf("%2d%c", a[i], i%n==(n-1)?'\n':' ');
}

unzigasgn(int x, int y, int n, int i, void *arr)
{
    int *a;

    a = (int*)arr;
    a[i] = x+y*n;
}

zigasgn(int x, int y, int n, int i, void *arr)
{
    int *a;

    a = (int*)arr;
    a[x+y*n] = i;
}

zigzag(int n, fn f1, void *arr)
{
    int i, x, y;

    i = 0;
    x = y = 0;
    f1(x, y, n, i, arr);
    for(;;) {
        /* right, or down */
        if(++i >= n*n)
            return;
        if(x+1 < n){
            x++;
            f1(x, y, n, i, arr);
        }else{
            y++;
            f1(x, y, n, i, arr);
        }

        /* left down */
        while(x-1 >= 0 && y+1 < n){
            x--;
            y++;
            if(++i >= n*n)
                return;
            f1(x, y, n, i, arr);
        }

        /* down, or right */
        if(++i >= n*n)
            return;
        if(y+1 < n){
            y++;
            f1(x, y, n, i, arr);
        }else{
            x++;
            f1(x, y, n, i, arr);
        }

        /* right up */
        while(x+1 < n && y-1 >= 0){
            x++;
            y--;
            if(++i >= n*n)
                return;
            f1(x, y, n, i, arr);
        }
    }
}

testzigzag(int n)
{
    int i;
    int n2;
    int *arr;

    n2 = n*n;
    arr = malloc(n*n*sizeof(*arr));

    zigzag(n, (fn)zigasgn, arr);
    zigzag(n, (fn)printpos, arr);
    printf("\n\n");
    zigzag(n, (fn)unzigasgn, arr);
    zigzag(n, (fn)printpos, arr);
}

main(int argc, char **argv)
{
    int n;

    n = 8;
    if(argc > 1){
        n = atoi(argv[1]);
    }
    testzigzag(n);
    return 0;
}

運(yùn)行結(jié)果截圖:

相關(guān)文章

  • C語(yǔ)言單鏈表常見(jiàn)操作匯總

    C語(yǔ)言單鏈表常見(jiàn)操作匯總

    這篇文章主要介紹了C語(yǔ)言單鏈表常見(jiàn)操作,需要的朋友可以參考下
    2014-07-07
  • C語(yǔ)言實(shí)現(xiàn)輸出各種三角形

    C語(yǔ)言實(shí)現(xiàn)輸出各種三角形

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)輸出各種三角形方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C語(yǔ)言結(jié)構(gòu)體占用內(nèi)存深入講解

    C語(yǔ)言結(jié)構(gòu)體占用內(nèi)存深入講解

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言結(jié)構(gòu)體占用內(nèi)存的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C/C++讀寫(xiě)文本文件、二進(jìn)制文件的方法

    C/C++讀寫(xiě)文本文件、二進(jìn)制文件的方法

    今天小編就為大家分享一篇C/C++讀寫(xiě)文本文件、二進(jìn)制文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Qt中線(xiàn)程常用通信方式介紹

    Qt中線(xiàn)程常用通信方式介紹

    Qt中,線(xiàn)程通信無(wú)處不在,最核心的特性信號(hào)槽就是一種線(xiàn)程間通信,這篇文章主要為大家介紹了幾種常用的方式,需要的小伙伴可以參考一下
    2025-01-01
  • Qt簡(jiǎn)單實(shí)現(xiàn)密碼器控件

    Qt簡(jiǎn)單實(shí)現(xiàn)密碼器控件

    這篇文章主要為大家詳細(xì)介紹了Qt簡(jiǎn)單實(shí)現(xiàn)密碼器控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++中關(guān)于委派(Delegates)的實(shí)現(xiàn)示例

    C++中關(guān)于委派(Delegates)的實(shí)現(xiàn)示例

    這篇文章主要介紹了C++中關(guān)于委派(Delegates)的實(shí)現(xiàn)示例,針對(duì)C++11的一些新特性進(jìn)行講解,需要的朋友可以參考下
    2015-07-07
  • C語(yǔ)言break和continue的語(yǔ)句用法

    C語(yǔ)言break和continue的語(yǔ)句用法

    這篇文章主要介紹了C語(yǔ)言break和continue的語(yǔ)句用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • C語(yǔ)言實(shí)現(xiàn)猜數(shù)游戲

    C語(yǔ)言實(shí)現(xiàn)猜數(shù)游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)猜數(shù)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++設(shè)計(jì)模式之適配器模式

    C++設(shè)計(jì)模式之適配器模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之適配器模式,本文詳細(xì)講解了C++中的適配器模式,并給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09

最新評(píng)論

辽阳市| 静乐县| 怀安县| 封开县| 庆安县| 中超| 杭锦旗| 黄龙县| 双峰县| 灵宝市| 栖霞市| 社旗县| 宁海县| 黎平县| 兴义市| 锡林郭勒盟| 天峨县| 孟州市| 南昌市| 西宁市| 桂阳县| 东山县| 铜鼓县| 曲松县| 沂南县| 茌平县| 获嘉县| 河池市| 遵义市| 福安市| 成都市| 裕民县| 罗田县| 平潭县| 黄梅县| 磴口县| 东方市| 时尚| 通榆县| 泸水县| 潮安县|