• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 183,  comments - 10,  trackbacks - 0

            來自于《算法:C 語言實(shí)現(xiàn)》
            1.

             1 // 快速查找算法
             2 
             3 #include <stdio.h>
             4 #define N 10000
             5 
             6 int main()
             7 {
             8     int i, p, q, t, id[N];
             9     for (i = 0; i < N; ++i)
            10     {
            11         id[i] = i;
            12     }
            13     while (scanf("%d %d"&p, &q) == 2)
            14     {
            15         if (id[p] == id[q])
            16         {
            17             continue;
            18         }
            19         for (t = id[p], i = 0; i < N; ++i)
            20         {
            21             if (id[i] == t)
            22             {
            23                 id[i] = id[q];
            24             }
            25         }
            26         printf(" %d %d\n", p, q);
            27     }
            28 }

            2.
             1 // 快速合并算法
             2 
             3 #include <stdio.h>
             4 #define N 10000
             5 
             6 int main()
             7 {
             8     int i, j, p, q, id[N];
             9     for (i = 0; i < N; ++i)
            10     {
            11         id[i] = i;
            12     }
            13     while (scanf("%d %d"&p, &q) == 2)
            14     {
            15         for (i = p; i != id[i]; i = id[i]);
            16         for (j = q; j != id[j]; j = id[j]);
            17         if (i == j)
            18         {
            19             continue;
            20         }
            21         id[i] = j;
            22         printf(" %d %d\n", p, q);
            23     }
            24 }

            3.
             1 // 加權(quán)快速合并算法
             2 
             3 #include <stdio.h>
             4 #define N 10000
             5 
             6 int main()
             7 {
             8     int i, j, p, q, id[N], sz[N];
             9     for (i = 0; i < N; ++i)
            10     {
            11         id[i] = i;
            12         sz[i] = 1;
            13     }
            14     while (scanf("%d %d"&p, &q) == 2)
            15     {
            16         for (i = p; i != id[i]; i = id[i]);
            17         for (j = q; j != id[j]; j = id[j]);
            18         if (i == j)
            19         {
            20             continue;
            21         }
            22         if (sz[i] < sz[j])
            23         {
            24             id[i] = j;
            25             sz[j] += sz[i];
            26         }
            27         else
            28         {
            29             id[j] = i;
            30             sz[i] += sz[j];
            31         }
            32         printf(" %d %d\n", p, q);
            33     }
            34 }

            4.
             1 // 帶有等分路徑壓縮的加權(quán)快速-合并算法
             2 
             3 #include <stdio.h>
             4 #define N 10000
             5 
             6 int main()
             7 {
             8     int i, j, p, q, id[N], sz[N];
             9     for (i = 0; i < N; ++i)
            10     {
            11         id[i] = i;
            12         sz[i] = 1;
            13     }
            14     while (scanf("%d %d"&p, &q) == 2)
            15     {
            16         for (i = p; i != id[i]; i = id[i])
            17         {
            18             id[i] = id[id[i]];
            19         }
            20         for (j = q; j != id[j]; j = id[j])
            21         {
            22             id[j] = id[id[j]];
            23         }
            24         if (i == j)
            25         {
            26             continue;
            27         }
            28         if (sz[i] < sz[j])
            29         {
            30             id[i] = j;
            31             sz[j] += sz[i];
            32         }
            33         else
            34         {
            35             id[j] = i;
            36             sz[i] += sz[j];
            37         }
            38         printf(" %d %d\n", p, q);
            39     }
            40 }

            posted on 2011-04-20 17:01 unixfy 閱讀(387) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久无码中文字幕东京热| 国产精品久久永久免费| 久久国产美女免费观看精品| 成人精品一区二区久久久| 国产农村妇女毛片精品久久| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 精品久久人人做人人爽综合| 久久人妻少妇嫩草AV无码蜜桃| 性欧美大战久久久久久久| 无码精品久久久久久人妻中字 | 午夜精品久久久久9999高清| 性做久久久久久久| 精品视频久久久久| 久久精品蜜芽亚洲国产AV| 久久精品国产精品亚洲艾草网美妙| 久久国产色av免费看| 97精品伊人久久大香线蕉| 国产精品久久久久久吹潮| 久久不见久久见免费影院www日本| 久久影院亚洲一区| 99久久99久久久精品齐齐| 合区精品久久久中文字幕一区| 久久精品国产亚洲AV嫖农村妇女 | 久久精品国产亚洲AV香蕉| 日韩AV毛片精品久久久| 国产精品久久久久久久久| 久久精品桃花综合| 久久久久九国产精品| 97r久久精品国产99国产精| 亚洲精品乱码久久久久久中文字幕| 久久免费99精品国产自在现线| 国产欧美久久久精品| 91久久婷婷国产综合精品青草| 久久香蕉超碰97国产精品| 午夜人妻久久久久久久久| 亚洲成色WWW久久网站| 亚洲色大成网站www久久九| 亚洲∧v久久久无码精品| 久久久久亚洲av无码专区 | 中文字幕日本人妻久久久免费| 日本久久久久久久久久|