日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汉诺塔问题(信息学奥赛一本通-T1205)

發(fā)布時(shí)間:2025/3/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汉诺塔问题(信息学奥赛一本通-T1205) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【題目描述】

約19世紀(jì)末,在歐州的商店中出售一種智力玩具,在一塊銅板上有三根桿,最左邊的桿上自上而下、由小到大順序串著由64個(gè)圓盤構(gòu)成的塔。目的是將最左邊桿上的盤全部移到中間的桿上,條件是一次只能移動(dòng)一個(gè)盤,且不允許大盤放在小盤的上面。

這是一個(gè)著名的問題,幾乎所有的教材上都有這個(gè)問題。由于條件是一次只能移動(dòng)一個(gè)盤,且不允許大盤放在小盤上面,所以64個(gè)盤的移動(dòng)次數(shù)是:18,446,744,073,709,551,615

這是一個(gè)天文數(shù)字,若每一微秒可能計(jì)算(并不輸出)一次移動(dòng),那么也需要幾乎一百萬年。我們僅能找出問題的解決方法并解決較小N值時(shí)的漢諾塔,但很難用計(jì)算機(jī)解決64層的漢諾塔。

假定圓盤從小到大編號(hào)為1, 2, ...

【輸入】

輸入為一個(gè)整數(shù)(小于20)后面跟三個(gè)單字符字符串。整數(shù)為盤子的數(shù)目,后三個(gè)字符表示三個(gè)桿子的編號(hào)。

【輸出】

輸出每一步移動(dòng)盤子的記錄。一次移動(dòng)一行。每次移動(dòng)的記錄為例如 a->3->b 的形式,即把編號(hào)為3的盤子從a桿移至b桿。

【輸入樣例】

2 a b c

【輸出樣例】

a->1->c
a->2->b
c->1->b

【源程序】

#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define N 1000010 using namespace std; void Hanoi(int n,char a,char c,char b) {if(n==1){printf("%c->%d->%c\n",a,n,b);return ;}Hanoi(n-1,a,b,c);printf("%c->%d->%c\n",a,n,b);Hanoi(n-1,c,a,b); } int main() {int n;char a,b,c;cin>>n>>a>>b>>c;Hanoi(n,a,c,b);return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的汉诺塔问题(信息学奥赛一本通-T1205)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。