今天看了WillWayer的一篇文章(http://www.cnblogs.com/willwayer/archive/2009/03/24/1420227.html),自己也写了一个,练练手。
今天看了WillWayer的一篇文章(http://www.cnblogs.com/willwayer/archive/2009/03/24/1420227.html),自己也写了一个,练练手。
1
public static class Hanoi2

{3
public static int _floorCount;4

5
public static int FloorCount6

{7
get8

{9
return _floorCount;10
}11

12
set13

{14
if (value < 1)15
throw new ApplicationException("塔的层数必须是一个正整数!");16
_floorCount = value;17
}18
}19

20
static Hanoi()21

{22
FloorCount = 64;23
}24

25
public enum Seat26

{27
A,28
B,29
C30
}31

32
public class Step33

{34
public Seat Start35

{36
get;37
set;38
}39

40
public Seat End41

{42
get;43
set;44
}45

46
public Step(Seat start, Seat end)47

{48
Start = start;49
End = end;50
}51

52
public override string ToString()53

{54
return Start.ToString() + " " + End.ToString();55
}56
}57

58
private static List<Step> CalculateSteps(int floorCount, Seat start, Seat temp, Seat end)59

{60
List<Step> steps = new List<Step>();61
if (floorCount == 1)62
steps.Add(new Step(start, end));63
else64

{65
foreach (Step step in CalculateSteps(floorCount - 1, start, end, temp))66

{67
steps.Add(step);68
}69
steps.Add(new Step(start, Seat.C));70
foreach (Step step in CalculateSteps(floorCount - 1, temp, start, end))71

{72
steps.Add(step);73
}74
}75

76
return steps;77
}78

79
public static List<Step> CalculateSteps()80

{81
return CalculateSteps(FloorCount, Seat.A, Seat.B, Seat.C);82
}83

84
public static void Print()85

{86
foreach (Step step in CalculateSteps())87

{88
Console.WriteLine(step);89
}90
}91
}
浙公网安备 33010602011771号