C# 简单实现汉诺塔算法

上一篇 / 下一篇  2016-05-17 13:59:45 / 个人分类:算法

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace HanoiTowerStructure

{

    class HanoiTower

    {

 

        public void MoveDisk(int DiskQuantity,string PositionA, string PositionB, string PositionC)

        {  

            // If there's only one disk, then end.

            if (DiskQuantity == 1)

            {

                Console.WriteLine("Move disk from position {0} to {1}.",  PositionA, PositionC);

                // Must return

                return;

            }

            else

            {

                // Step 1 - Change B to C  (A --> B)

                MoveDisk(DiskQuantity - 1, PositionA,PositionC,PositionB);

                // Step 2 - No changes     (A --> C)

                MoveDisk(1, PositionA, PositionB, PositionC);

                // Step 3 - Change B to A  (A --> C)

                MoveDisk(DiskQuantity - 1, PositionB, PositionA, PositionC);

            }

        }

 

        static void Main(string[] args)

        {

            HanoiTower hanoi = new HanoiTower();

 

            Console.WriteLine("Please input Disk Quantity:");

            int DiskQuantity = Convert.ToInt32(Console.ReadLine());

 

            hanoi.MoveDisk(DiskQuantity, "A", "B", "C");

 

            Console.ReadKey();

        }

    }

}

 


TAG: 汉诺塔算法

 

评分:0

我来说两句

Open Toolbar