以上内容参考:百度百科——河内塔A-B
A - C
B - C
A - B
大六度
大七度
A - B
A - C
B - C
B - A
大六度
B - C
A - B
/p>A------->C
B------->C
A------->B
C------->A
C------->B
A------->B
C------->A
B------->C
B------->A
C------->A
C------->B
A------->B
A------->C
B------->C
A------->B
C------->A
C------->B
A------->B
A------->C
B------->C
B------->A
C------->A
B------->C
A------->B
A------->C
B------->C
B------->A
C------->A
C------->B
A------->B
C------->A
B------->C
B------->A
C------->A
B------->C
A------->B
A------->C
B------->C
A------->B
C------->A
C------->B
A------->B
A------->C
B------->C
B------->A
C------->A
B------->C
A------->B
A------->C
B------->C
1 , 汉诺塔只要掌握规律 , 多少层都是一样的 。 最重要的是第一块放在哪儿 , 单数层的汉诺塔一定要放在第三柱 , 双数层的要放在第二柱 。 如果你会六层的汉诺塔 , (将第一块放在第三柱) , 将六块都移到第二柱 , 最后一块移到第三柱 , 再如前法将上面六块都移到第三柱 。
2 , 河内塔是根据一个传说形成的一个问题:有三根杆子A , B , C 。 A杆上有N个(N>1)穿孔圆盘 , 盘的尺寸由下到上依次变小 。
给你个程序 , 你运行一下就知道了 呵呵
# include
void hanuota(int n,char a,char b,char c)
if (1 == n)
printf("将 %d 从柱子 %c 移动到柱子 %c\n",n,a,c);
}
else
{
hanuota(n-1,a,c,b);
printf("将 %d 从柱子 %c 移动到柱子 %c\n",n,a,c);
hanuota(n-1,b,a,c);
int main(void)
int n;
char a = 'a';
char b = 'b';
char c = 'c';
printf("请输入所要移动的盘子的层数:");
scanf("%d",&n);
hanuota(n,a,b,c);
return 0;
}用你的比如我不太熟 还是以我的方法吧
123分别是柱子 1-2表示把1柱子最上面的盘子挪到2柱子上
1-2 1-3 2-3 1-2 3-1 3-2 1-2
1-3 2-3 2-1 3-1 2-3 1-2 1-3 2-3
1-2 3-1 3-2 1-2 3-1 2-3 2-1 3-1 3-2 1-2 1-3 2-3 1-2 3-1 3-2 1-2
1-3 2-3 2-1 3-1 2-3 1-2 1-3 2-3 2-1 3-1 3-2 1-2 3-1 2-3 2-1 3-1
2-3 1-2 1-3 2-3 1-2 3-1 3-2 1-2 1-3 2-3 2-1 3-1 2-3 1-2 1-3 2-3 完成
累死我了 想的脑袋都疼 。 。 。 6个是吧 , 我告诉你 , 不管多少个都不成问题!
3个柱子:A,B,C
盘子(双数个):盯死第1个(最初在A上) , 在保证其他按大小顺序排列的情
况下 , 它下一次的移动将在B上 , 下一次在C上 , 再下一次又
在A上 , ..... , A→B→C , 直到最终所有的都移到C上 。
eg(就6个吧):(1-B),2-C,(1-C),3-B,(1-A),2-B,(1-B),4-C,(1-C),2-A,
(1-A),3-C,(1-B),2-C,(1-C),5-B,(1-A),2-B,(1-B),3-A,
(1-C),2-A,(1-A),4-B,(1-B),2-C,(1-C),3-B,(1-A),2-B,
(1-B),6-C,(1-C),2-A,(1-A),3-C,(1-B),2-C,(1-C),4-A,
(1-A),2-B,(1-B),3-A,(1-C),2-A,(1-A),5-C,(1-B),2-C,
(1-C),3-B,(1-A),2-B,(1-B),4-C,(1-C),2-A,(1-A),3-C,
(1-B),2-C,(1-C)
盘子(单数个):盯死第1个(最初在A上) , 在保证其他按大小顺序排列的情
况下 , 它下一次的移动将在C上 , 下一次在B上 , 再下一次又
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
