zoukankan      html  css  js  c++  java
  • 睡不着,随便写了下汉诺塔的解决方法。

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace ConsoleApplication1
    {
        
    class Program
        
    {
            
    static void Main(string[] args)
            
    {

                    
    int times = new HanoiTower(3).SolveTower();
                
                Console.WriteLine(
    "一共需要{0}次", times);

                Console.ReadKey();
            }

        }


        
    class HanoiTower
        
    {
            
    private int plates;
            
    public HanoiTower(int plates)
            
    {
                
    this.plates = plates;
            }

            
    public int SolveTower()
            
    {
                
    return SolveTower(plates, "A""B""C");
            }

            
    private int SolveTower(int plates,string a, string b, string c)
            
    {
                
    int count = 0;
                
    if (plates <= 0)
                    
    throw new ArgumentOutOfRangeException("plates","盘子数必须是大于0的整数");
                
    if (plates == 1)
                

                    move(a, c);
                    
    return 1;
                }

                count 
    += SolveTower(plates - 1, a, c, b);
                count 
    += SolveTower(1, a, b, c);
                count 
    += SolveTower(plates - 1, b, a, c);
                
    return count;

            }

            
    private void move(string a, string c)
            
    {
                Console.WriteLine(a 
    + " => " + c);
            }

        }

    }

    张旋(zxsoft)
    如对本文有什么疑问,请在下面写下留言,谢谢!

  • 相关阅读:
    DS博客作业05--查找
    DS博客作业04--图
    数据结构-栈,队列
    我の第六篇博客
    我の第五篇博客
    我の第四篇博客
    我の第三篇博客
    我の第二篇博客
    Java 购物车大作业01
    有理数类的设计
  • 原文地址:https://www.cnblogs.com/zxsoft/p/1210400.html
Copyright © 2011-2022 走看看