C語言/C++ 實現漢諾塔程式碼
假設現在有a 、b 、c 三個柱子,現在要把n個盤子從a移動到c,用遞迴來做,具體步驟如下。
把a上面n-1個盤子看做一個整體,這樣a上面就剩下兩個盤子了,(n,n-1)
1、把n-1個整體藉助於c先移動到c
2、把第n個移動到c
3、把b上面的n-1個盤子藉助於a移動到c
程式碼實現如下:
#include <iostream>
using namespace std;
void hanoi(int n, char a, char b, char c)
{
/* 如果剩下一個盤子,直接從a-->c */
if(1 == n)
{
cout << n << ":" << a << "-->" << c << endl;
}
else
{
/* 把n-1個盤子從a移動到b藉助於c */
hanoi(n-1,a,c,b);
/* 把第n和盤子從a移動c */
cout << n << ":" << a << "-->" << c << endl;
/* 把n-1個盤子從b移動到c藉助於a */
hanoi(n-1,b,a,c);
}
}
int main()
{
int num = 0;
cin >> num;
hanoi(num,'a','b','c');
return 0;
}
相關推薦
C語言/C++ 實現漢諾塔程式碼
假設現在有a 、b 、c 三個柱子,現在要把n個盤子從a移動到c,用遞迴來做,具體步驟如下。 把a上面n-1個盤子看做一個整體,這樣a上面就剩下兩個盤子了,(n,n-1) 1、把n-1個整體藉助
c語言遞迴實現漢諾塔
程式碼不是自己寫的,copy資料結構書上的,看的懂,但是寫不出來。 //程式碼很簡潔,但卻是經典 #include <stdio.h> int count =0; void move(char x,int n,char y) { co
c語言實現漢諾塔(程式執行步驟詳解)
很久沒去接觸c語言了,今天翻了翻c語言的書,偶然間看到了大一時讓我鬱悶了很久的漢諾塔問題,又重新推理了一遍,漢諾塔的實現採用遞迴演算法,涉及到資料結構中的棧的知識。下面是c實現漢諾塔的原始碼。程式只是實現了文字資訊,即用文字描述了圓盤的移動過程,並未真正實現圓盤的移動,該程式
C++_遞迴實現漢諾塔
A為存放盤子的塔,B為目標塔,C為輔助塔 演算法分為三步 一、將A上n-1個盤子全部放到C塔上 二、將A上剩下的一個盤子放到B塔上 三、將C塔上的盤子全部放到B塔上 注:不需要考慮如何移動n-
C++實現漢諾塔問題
#include <iostream> using namespace std; void hanoi(int N,char source,char relay,char destinat
棧實現遞歸實現漢諾塔問題
漢諾塔 遞歸實現 char else noi spa java pre demo 1 public class JavaDemo { 2 private int c = 0; 3 4 public static void main(String[
Unity實現漢諾塔遊戲
ges idt warn mage [0 lis lose gif bject 漢諾塔的規則: 有ABC三個柱子,A柱子上從小到大排列圓盤 要將A柱子上所有圓盤移動到C柱子上,每次只能移一個 圓盤放置必須從小到大,不能存在此盤子上面有比它大的存在。 比如三個漢諾塔玩法:
python_遞歸實現漢諾塔
style col express 表達 pan 漢諾塔 div 歸納 tex 在遞歸的時候,和數學的歸納法一致。 void func( mode) { if(endCondition) { constExpression
python實現漢諾塔
代碼 log comment 如果 例如 string 方式 fun mov 漢諾塔是印度一個古老傳說的益智玩具。漢諾塔的移動也可以看做是遞歸函數。 我們對柱子編號為a, b, c,將所有圓盤從a移到c可以描述為: 如果a只有一個圓盤,可以直接移動到c; 如果a有N個圓
用python實現漢諾塔
漢諾塔問題描述: 漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一
Java實現漢諾塔移動過程
import java.util.*; public class Main { public static void Show(int q,char w,char e) { System.out.printf("Move disk %d from %c to
Python實現漢諾塔(hanoi)列表的轉移
漢諾塔不必多說,常用的實現方式——遞迴 也不用多說,直接上程式碼: __author__ = "Jazzon" __coding__ = "UTF-8" __version__ = "python3.
python實現漢諾塔詳解
用python解決漢諾塔問題 本來想給自己立個flag,三個月學完python,結果看完了廖雪峰老師講解的漢諾塔問題覺得自己好像真的是個智障,我本來是個遇到困難想都不想就退縮的人,但這次我真的想試著研究一下,當然一部分原因也是為了讓自己看起來沒那麼像智障而已,
遞迴實現漢諾塔問題
雖然搞程式多年了,對遞迴演算法還是有些打怵。遞迴本身好理解,但其各層巢狀卻容易將人繞暈,遞迴的漢諾塔問題就將我搞暈了多次。我搜了好多資料,也查閱了好多書籍,但都是泛泛而談,不夠詳細,下面是我精心總結一下漢諾塔問題。 漢諾塔的問題:(百度百科引用) 漢諾塔問題是源於印度一個古
cc150:使用棧來實現漢諾塔
遞迴解法其實也是用到了棧的,在每次遞迴呼叫自己的時候, 將中間的狀態引數壓入棧中。不過這些操作都是系統隱式進行的, 所以你不用去關心它具體是怎麼壓棧出棧的。如果我們要用棧自己來實現這個過程, 就不得不考慮這其中的細節了。 接下來,我們就顯式地用
Python 實現漢諾塔演算法
# coding: utf-8 def my_print(args): print args # 將n個盤子從a移動到c, 以b為中介 def move(n, a, b, c): if n == 1: # 若只有一個盤子,直接從a移動
Java 遞迴實現漢諾塔問題
漢諾塔問題就是:有ABC三根柱子,A柱子上從上到下摞了很多體積依次遞增的圓盤,如果將圓盤從A移動到C柱子,且依然保持從上到下依次遞增。 class Hanio{ public void moveOn
Python實現漢諾塔遞迴經典演算法
在廖大神學習網站上學到遞迴的時候,有這樣一個練習: 題目:請編寫move(n, a, b, c)函式,它接收引數n,表示3個柱子A、B、C中第1個柱子A的盤子數量,然後打印出把所有盤子從A藉助B移動到C的方法, 期待輸出: A –> C A –
javascript實現漢諾塔
漢諾塔是一道經典的遞迴程式設計的經典題 題目要求: 漢諾塔問題來自一個古老的傳說:在世界剛被建立的時候有一座鑽石寶塔(塔A),其上有64個金碟。所有碟子按從大到小的次序從塔底堆放至塔頂。緊挨著這座塔有另外兩個鑽石寶塔(塔B和塔C)。從世界創始之日起,婆羅門的
用Python遞迴實現漢諾塔問題
問題描述 漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,