【Hanoi塔简介】:
假设存在A,B,C三个托盘,其中A托盘中按照尺寸由小到大排列着盘子。现要求,把盘子按照这一顺序从A盘放到C盘中。
说明:当存在大尺寸的盘子在小尺寸盘子下时,则会把小尺寸盘子压碎。
【Hanoi塔算法】:
void Hanoi(int n, int A, int B, int C) {
if(n == 1) {
Hanoi(A, 1, C);
}
else {
Hanoi(n-1, A, C, B);
move(A, n, C);
Hanoi(n-1, B, A, C);
}
【算法说明】:
当n=1时,说明A中只存在一个盘子,而只需将其移动到C中,则算法结束。
当n>=2时,则需将C盘作为过度,把A托盘中的n-1个盘子先暂时放入B中,同时
将第n个盘子放入得到C中。其次。将A用作过度,将B中的n-1个盘子依次通过A
之后放入到C中。算法完成。