- // ***************************************************************
- // Hannover version: 1.0 · date: 12/26/2008
- // -------------------------------------------------------------
- // Author ZhangLiang
- // -------------------------------------------------------------
- // Copyright (C) 2008 - All Rights Reserved
- // ***************************************************************
- //
- // ***************************************************************
- #include "stdafx.h"
- //////////////////////////////////////////////////////////////////////////
- //Define the hannover struct
- typedef struct
- {
- string name;
- int i ;
- } Hannover;
- ostream& operator <<(ostream& os,const string& se)
- {
- os<<se.data();
- return os;
- }
- //take a floor from hanSource to hanDest
- void ChangePos(Hannover& hanSource, Hannover& hanDest)
- {
- cout<<hanSource.name<<" -> "<<hanDest.name<<'/n';
- }
- //////////////////////////////////////////////////////////////////////////
- //The hannover function
- void HannoverFunc(Hannover& hanSource,Hannover& hanBuf, Hannover& hanDest,int n)
- {
- if (1==n)
- {
- ChangePos(hanSource,hanDest);
- }
- else
- {
- HannoverFunc(hanSource,hanDest,hanBuf,n-1);
- ChangePos(hanSource,hanDest);
- HannoverFunc(hanBuf,hanSource,hanDest,n-1);
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- //Define 3 hannover.
- //If there are n floors on A, take them to C.
- Hannover HanA;
- HanA.name = "A";
- Hannover HanB;
- HanB.name = "B";
- Hannover HanC;
- HanC.name = "C";
- //n floors
- int n = 3;
- HannoverFunc(HanA,HanB,HanC,n);
- system("pause");
- return 0;
- }
漢諾塔算法(Visual Studio 2005 C++.net)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.