中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

漢落塔算法實現(xiàn)代碼

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

用 4 根柱子移動盤子n 是盤子個數(shù),編號從1 到 nFirst 是源柱子號Second Third 是兩根過渡柱Fourth 是目標(biāo)柱

漢落塔算法

#include <stdio.h>

//--------------------------------------------------------
// 打印搬運動作
//--------------------------------------------------------
int MoveIt(int x,int Source,int Target)
{
    printf("Move %d From %d to %d\n",x,Source,Target);
    return 0;
}

//--------------------------------------------------------
// 用 4 根柱子移動盤子
// n 是盤子個數(shù),編號從1 到 n
// First 是源柱子號
// Second Third 是兩根過渡柱
// Fourth 是目標(biāo)柱
//--------------------------------------------------------
int MoveHanoi(int n,int First,int Second,int Third,int Fourth)
{
    if (n<1) return 0;                  // 如果沒有盤子就返回
    if (n==1)                            // 如果只有一個盤子
    {
        MoveIt(n,First,Fourth);          // 就直接從源柱子移到目標(biāo)柱子上
        return 0;
    }
    if (n==2)                            // 如果有兩個盤子
    {
        MoveIt(n-1,First,Second);        // 把上面的那片移到一個過渡柱上
        MoveIt(n,First,Fourth);          // 把下面的那片移到目標(biāo)柱上
        MoveIt(n-1,Second,Fourth);      // 再把第 1 片從過渡柱移到目標(biāo)柱上
return 0;
    }
    if (n==3)                            // 如果有 3 片盤子
    {
        MoveIt(n-2,First,Second);        // 把最小的盤子移到一個過渡柱上
        MoveIt(n-1,First,Third);        // 把中間盤子移到另一過渡柱上
        MoveIt(n,First,Fourth);          // 把最大的盤子移到目標(biāo)柱上
        MoveIt(n-1,Third,Fourth);        // 把中間盤子移到目標(biāo)柱上
        MoveIt(n-2,Second,Fourth);      // 把最小的盤子移到目標(biāo)柱上
        return 0;
    }
                                        // 遞歸地把上面 n-2 盤子移到一個過渡柱上
                                        // 留下最大的兩個盤子
    MoveHanoi(n-2,First,Third,Fourth,Second);
    MoveIt(n-1,First,Third);            // 把倒數(shù)第 2 個盤子移到另一個過渡柱上
    MoveIt(n,First,Fourth);              // 把最底下的盤子移到目標(biāo)柱上
    MoveIt(n-1,Third,Fourth);            // 把倒數(shù)第 2 個盤子移到目標(biāo)柱上
                                        // 遞歸地把 n-2 個盤子從過渡柱上移到目標(biāo)柱上
    MoveHanoi(n-2,Second,First,Third,Fourth);
    return 0;
}

int main()
{
    MoveHanoi(4,1,2,3,4);
    return 0;
}

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:python生成圖片

下一篇:AFNetWorking 2.0 使用