算法一--三塔换位移形之路

来源:互联网 发布:win10网络唤醒 编辑:程序博客网 时间:2024/06/05 20:39

问题描述:

河内之塔 (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 );}}}}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝2岁还吃母乳怎么办 宝宝总抠屁眼怎么办 一年级的孩子厌学怎么办 孩子就是不说话怎么办 感觉自己反应慢怎么办 小学生数学基础不好怎么办 数学考差了怎么办 孩子考试成绩差该怎么办 大学高数听不懂怎么办 遇上自私的父母怎么办 小孩一年级数学不好怎么办 数学考试考不好怎么办 孩子奥数学不好怎么办 孩子下笔太重怎么办 小孩子写字太重怎么办 经常对小孩发火怎么办 对小孩发火后悔怎么办 小孩子不喜欢学数学怎么办? 孩子心里素质差怎么办 三年级语文太差怎么办 宝宝一年级很笨怎么办 一年级孩子太笨怎么办 孩子学习脑子笨怎么办 四年级孩子数学差怎么办 中考考不好了怎么办 初中没学高中怎么办 数学基础差该怎么办 三年级数学成绩差怎么办 夫妻差6岁怎么办 初一数学很差劲怎么办 三年级孩子成绩差怎么办 初中数学成绩不好怎么办 大人不会算数学怎么办 小学初数学不好怎么办 初中生数学计算能力差怎么办 初中生数学计算差怎么办 初一数学没救了怎么办 五年级英语不好怎么办 三年级孩子学习差怎么办 孩子三年级学习成绩差怎么办 三年级字写不好怎么办