汉诺塔算法(Visual Studio 2005 C++.net)

来源:互联网 发布:mac npm 全局安装路径 编辑:程序博客网 时间:2024/05/22 00:20
  1. // ***************************************************************
  2. //  Hannover   version:  1.0   ·  date: 12/26/2008
  3. //  -------------------------------------------------------------
  4. //  Author ZhangLiang
  5. //  -------------------------------------------------------------
  6. //  Copyright (C) 2008 - All Rights Reserved
  7. // ***************************************************************
  8. // 
  9. // ***************************************************************
  10. #include "stdafx.h"
  11. //////////////////////////////////////////////////////////////////////////
  12. //Define the hannover struct
  13.  typedef struct  
  14.  {
  15.     string name;
  16.     int i ;
  17.     
  18.  } Hannover;
  19.  ostream& operator <<(ostream& os,const string& se)
  20.  {
  21.      os<<se.data();
  22.      return os;
  23.  }
  24.  //take a floor from hanSource to hanDest
  25.  void ChangePos(Hannover& hanSource, Hannover& hanDest)
  26.  {
  27.     cout<<hanSource.name<<" -> "<<hanDest.name<<'/n';
  28.  }
  29.  //////////////////////////////////////////////////////////////////////////
  30.  //The hannover function
  31.  void HannoverFunc(Hannover& hanSource,Hannover& hanBuf, Hannover& hanDest,int n)
  32.  {
  33.     if (1==n)
  34.     {
  35.         ChangePos(hanSource,hanDest);
  36.     }
  37.     else
  38.     {
  39.         HannoverFunc(hanSource,hanDest,hanBuf,n-1);
  40.         ChangePos(hanSource,hanDest);
  41.         HannoverFunc(hanBuf,hanSource,hanDest,n-1);
  42.     }
  43.  }
  44. int _tmain(int argc, _TCHAR* argv[])
  45. {
  46.     //Define 3 hannover.
  47.     //If there are n floors on A, take them to C.
  48.     Hannover HanA;
  49.     HanA.name = "A";
  50.     Hannover HanB;
  51.     HanB.name = "B";
  52.     Hannover HanC;
  53.     HanC.name = "C";
  54.     
  55.     //n floors
  56.     int n = 3;
  57.     HannoverFunc(HanA,HanB,HanC,n);
  58.     
  59.     system("pause");
  60.     return 0;
  61. }
原创粉丝点击