using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hanuota
{
class Program
{
static void Main(string[] args)
{
count = 0;
Hanuota(3, 'A', 'B', 'C');
Console.WriteLine("----------------------------");
count = 0;
Hanuota(4, 'A', 'B', 'C');
Console.WriteLine("----------------------------");
}
static int count = 0;
static void Hanuota(int n, char from, char buffer, char to)
{
if (n==1)
{
Console.WriteLine("{0}:{1}=>{2}", ++count, from, to);
}
else
{
Hanuota(n - 1, from, to, buffer);
Hanuota(1, from, buffer, to);
Hanuota(n - 1,buffer, from, to);
}
}
}
/*
1:A=>C
2:A=>B
3:C=>B
4:A=>C
5:B=>A
6:B=>C
7:A=>C
----------------------------
1:A=>B
2:A=>C
3:B=>C
4:A=>B
5:C=>A
6:C=>B
7:A=>B
8:A=>C
9:B=>C
10:B=>A
11:C=>A
12:B=>C
13:A=>B
14:A=>C
15:B=>C
----------------------------
请按任意键继续. . .
*/
}
def move(n,fromPos,buffer,to):
if n==1:
print('Move',n,'fromPos',fromPos,'to',to)
else:
move(n-1,fromPos,to,buffer)
move(1,fromPos,buffer,to)
move(n-1,buffer,fromPos,to)
if __name__ == '__main__':
move(3,'A','B','C')
print '-----------------------------------','\n'
move(4,'A','B','C')
'''
D:\>python Hanuota.py
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'C', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'A')
('Move', 1, 'fromPos', 'B', 'to', 'C')
('Move', 1, 'fromPos', 'A', 'to', 'C')
-----------------------------------
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'C')
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'C', 'to', 'A')
('Move', 1, 'fromPos', 'C', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'A')
('Move', 1, 'fromPos', 'C', 'to', 'A')
('Move', 1, 'fromPos', 'B', 'to', 'C')
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'C')
'''