演算法一–三塔換位移形之路

來源:互聯網
上載者:User

問題描述:

河內之塔 (Towers of Hanoi) 是法國人 M.Claus(Lucas) 於 1883 年從泰國帶至法國的,河內為越戰時
北越的首都,即現在的胡志明市; 1883 年法國數學家 Edouard Lucas 曾提及這個故事,據說創 世
紀時 Benares 有一座波羅教塔,是由三支鑽石棒( Pag )所支撐,開始時神在第一根棒上放置 64
個由上至下依由小至大排列的金盤( Disc ),並命令僧侶將所有的金盤從第一根石棒移至第三 根
石棒,且搬運過程中遵守大盤子在小盤子之下的原則,若每日僅搬一個盤子,則當盤子全數搬
運完畢之時,此塔將毀損, 而也就是世界末日來臨之時。建模求解出移動的具體過程。

答案:

#include <stdio.h>static int nCount = 0;void MoveTower( int n, char A, char B, char C ){//解法 如果柱子標為 ABC ,要由 A 搬至 C ,在只有一個盤子時,就將它直接搬至 C ,當有兩個盤//子,就將 B 當作輔助柱。如果盤數超過 2 個,將第三個以下的盤子遮起來,就很簡單了,每次 處//理兩個盤子,也就是: A->B 、 A ->C 、 B->C 這三個步驟,而被遮住的部份,其實就是進入程式//的遞迴處理。/if( n>0 ){if( 1==n ){printf( "%d-->Move sheet %d From %c To %c\n", ++nCount, n, A, C );}else{MoveTower( n-1, A, C, B );printf( "%d-->Move sheet %d From %c To %c\n", ++nCount, n, A, C );MoveTower( n-1, B, A, C );}}}int main(int argc, char *argv[]){MoveTower( 5, 'A', 'B', 'C' );return 0;}

Java版

public class Tower{static int nCount = 0;public static void main( String args[] ){MoveTower( 5, 'A', 'B', 'C' );}static void MoveTower( int n, char A, char B, char C ){//解法 如果柱子標為 ABC ,要由 A 搬至 C ,在只有一個盤子時,就將它直接搬至 C ,當有兩個盤//子,就將 B 當作輔助柱。如果盤數超過 2 個,將第三個以下的盤子遮起來,就很簡單了,每次 處//理兩個盤子,也就是: A->B 、 A ->C 、 B->C 這三個步驟,而被遮住的部份,其實就是進入程式//的遞迴處理。/if( n>0 ){if( 1==n ){System.out.println( ++nCount+"->Move sheet "+n+" From "+A+" To "+C+"\n" );}else{MoveTower( n-1, A, C, B );System.out.println( ++nCount+"->Move sheet "+n+" From "+A+" To "+C+"\n" );//printf( "%d-->Move sheet %d From %c To %c\n", ++nCount, n, A, C );MoveTower( n-1, B, A, C );}}}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.