Hanoi

    技术2022-05-11  61

    发表时间:2007年1月23日 20时16分 [%=@title%][%=@count%]票 [[%=@percent%]%]  Hanoi塔问题       假设有三个分别命名为A、B、C的塔座,在塔座X上插有n个直径大小各不相同、依小到大编号为1,2,…,n的圆盘。现要求将X轴上的n个圆盘移至塔座Z上并仍按同样顺序叠排,圆盘移动时必须遵循下列规则:  1)每次只能移动一个圆盘;  2)圆盘可以插在A、B、C中的任一塔座上;  3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上 using System; using System.Collections.Generic; using System.Text; namespace Hanoi {     class Program     {         public void HanoiMethod(int n,char OneTower,char TwoTower,char ThreeTower)              //将n个盘子从one塔借助two塔移动到                                                                //three塔         {             if (n == 1)             {                 MoveMethod(OneTower, ThreeTower);             }             else             {                 HanoiMethod(n - 1, OneTower, ThreeTower, TwoTower);                 MoveMethod(OneTower,ThreeTower);                 HanoiMethod(n-1,TwoTower,OneTower,ThreeTower);             }         }         public void MoveMethod(char Xtower,char Ytower)         {             Console.WriteLine("{0}塔---->{1}塔", Xtower, Ytower);         }         static void Main(string[] args)         {//  m为盘子数量             int Disks;             Console.WriteLine("请输入盘子的数量:");             Disks=Int32.Parse(Console.ReadLine());             Console.WriteLine("移动{0}个盘子:/n",Disks);             Program Moves = new Program();             Moves.HanoiMethod(Disks, 'A', 'B', 'C');         }     }  

    最新回复(0)