請問一下 關於 河內塔搬移問題

我想用c寫河內塔

目前的問題在於

它的搬移(規則)我知道

可是我不知道要用什麼方法

去寫 程式 (1)搬移 能讓他能在 最短的次數 移完

(2)每搬移一次 要印出狀況一次

希望高手能指點一下 告訴我要怎麼下手、從哪邊下手、搬移技巧

謝謝

2 個解答

評分
  • 2 0 年前
    最佳解答

    下面的程式是C++的版本 (取材自NBP的電子報)

    詳細說明可參看 下列網址

    http://203.204.88.244/xoops/html/modules/ipboard/i...

    ================================================================

    #include <iostream.h>

    int step=0;

    void hanoi

    (int no_disk,char source,char intermediate,char destination);

    void main(void)

    {

    int no_disk;

    cout << "Please input disk: ";

    cin >> no_disk;

    hanoi(no_disk,'A','B','C');

    cin.get();

    }

    void hanoi

    (int no_disk,char source,char intermediate,char destination)

    {

    if(no_disk > 1)

    hanoi(no_disk-1,source,destination,intermediate);

    cout << "Step " << ++step <<": Move disk " << no_disk;

    cout << "From " << source << " TO " << destination << "\n";

    if(no_disk > 1)

    hanoi(no_disk-1,intermediate,source,destination);

    }

    ================================================================

    下面的程式是C語言的版本

    ================================================================

    main()

    {

     int n;

     printf ("enter N = ");

     scanf ("%d", &n);

     hanoi ('A','B','C',n);

    }

    hanoi (a,b,c,n)

    char a, b, c;

    int n;

    {

     if (n == 1)

       printf ("move disk %d from %c to %c \n", n, a, c);

     else

     {

      honoi (a, c, b, n-1);

      printf ("move disk %d from %c to %c \n", n, a, c);

      hanoi (b, a, c, n-1);

     }

    }

    參考資料: http://203.204.88.244/xoops/html NBP數位高手
  • ?
    Lv 6
    2 0 年前

    老掉牙的題目了。。。參考一下我寫的筆記吧。。。

    http://caterpillar.onlyfun.net/Gossip/AlgorithmGos...

    有興趣也可以看一下雙色與三色河內塔。。。

    http://caterpillar.onlyfun.net/Gossip/AlgorithmGos...

    網頁是UTF8編碼的。。。如果看到亂碼的。。。請記得設一下您的瀏覽器編碼為UTF8。。。

還有問題?馬上發問,尋求解答。