OPQ 發問時間: 電腦與網際網路程式設計 · 1 0 年前

怎麼用C++來寫河內塔問題程式

我想知道怎麼使用C++來寫河內塔問題的程式

而且必須用遞迴的概念來寫

我查過知識了但是好像找不到用C++又有講解的程式

希望高手能附上程式和講解

3 個解答

評分
  • WHO00
    Lv 4
    1 0 年前
    最佳解答

    假設有A(source)、B(temp)、C(dest)三根柱子

    則move只是在做就是把A的東西都搬到C

    河內塔你知道的就是

    先把n-1個搬到B

    再把最後一個搬到C

    再把n-1也搬到C

    所以程式如下:

    void move(int n, char source, char temp, char dest) //source搬到dest(A搬到C)

    {

    if(n){

    move(int n-1,source,dest,temp); //source搬到temp(A搬到B)

    printf("move disk%d from peg%c to %c \n",n,soerce,dest); //最下面的一個A搬到C

    move(int n-1,temp,source,dest); //再從temp搬到dest(再從B搬到C)

    }

    解說的應該了解了吧!

    以上都是我自己寫的

    參考資料: 請勿複製、抄襲
  • 匿名使用者
    1 0 年前

    龍大少寫的真好

    我也懂了

    3Q

  • 1 0 年前

    轉貼自http://www.programmer-club.com/pc2020v5/forum/Show...

    河內塔問題本身就是一堆盤子的問題, 如果電腦要解決問題只有用模擬(Simulation)的方式,

    下列的程式是假設PEG 1 有 N 個盤子, 藉由PEG 2 當中繼, 移至PEG 3 的模擬程式.

    輸入值為盤子個數 N , 輸出為盤子一個,一個移動的順序, 它的結果就是合乎河內塔問題精神所在-- 小盤子永遠在大盤子的上面

    字數太多請到http://www.programmer-club.com/pc2020v5/forum/Show...

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