永发信息网

移64块金片问题,可能较难…………

答案:2  悬赏:0  手机版
解决时间 2021-03-09 05:18
  • 提问者网友:棒棒糖
  • 2021-03-08 15:30
可能较难 有三根柱子,在其中一根上放有64块金片,它们是从下往上按照由大到小依次放的。现在把这根柱子上的64块金片移到另两根上,并保证大的始终在下,小的在上。请问最少需要移几次?
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-03-08 16:11
直到n等于1时才实现真正的搬动,则首先将A上的前(n-1)个金片搬到B上,然后将A上的最后一个金片搬到C上。对于如何实现(n-1)个金片的搬动问题,直接将a上的金片移动到c上:
(HANOI 'c 3)
MOVE DISK FROM A TO C
MOVE DISK FROM A TO B
MOVE DISK FROM C TO B
MOVE DISK FROM A TO C
MOVE DISK FROM B TO A
MOVE DISK FROM B TO C
MOVE DISK FROM A TO C

呵呵 我对高等术小一窍不通 但是恰好我知道了这个就是著名的梵塔问题

你可以参看这里

http:假定要把n个金片从A搬到C;a 'b '。可以证明,这样的搬动算法是可以满足要求的。
定义梵塔问题求解函数HANOI。其中参数a、b、c、n表示将在柱a上的n个金片,通过柱b移动到柱c上
全部回答
  • 1楼网友:猎心人
  • 2021-03-08 17:04
我们用递归算法解决这个问题,其算法很简单:假定要把n个金片从a搬到c,则首先将a上的前(n-1)个金片搬到b上,然后将a上的最后一个金片搬到c上,最后将b盘上的(n-1)个金片搬到c上。对于如何实现(n-1)个金片的搬动问题,则借助于递归来实现,直到n等于1时才实现真正的搬动。可以证明,这样的搬动算法是可以满足要求的。 定义梵塔问题求解函数hanoi。其中参数a、b、c、n表示将在柱a上的n个金片,通过柱b移动到柱c上。 (defun hanoi(a b c n) 当只有一个金片时,直接将a上的金片移动到c上。 (cond((=n 1)(move-disk a c)) 其他情况下,通过递归调用,先将柱a上的n-1个金片通过柱c移动到柱b上。 (t(hanoi a c b(- n 1)) 再将柱a上的一个金片移动到柱c上。 (move-disk a c) 最后再通过递归调用,将柱b上的n-1个金片通过柱a移动到柱c上。 (hanoi b a c(- n 1))))) 函数move-disk只起显示的作用,表示出从柱from到柱to移动了一个金片。 (defun move-disk(from to) (terpri) (princ"move disk from") (princ from) (princ"to") (princ to)) 为了显示金片的搬动过程,利用move-disk函数将搬动金片的次序显示出来,其中terpri是回车换行函数,princ是显示参数的函数。下面是n=3时的求解结果: (hanoi 'a 'b 'c 3) move disk from a to c move disk from a to b move disk from c to b move disk from a to c move disk from b to a move disk from b to c move disk from a to c 呵呵 我对高等术小一窍不通 但是恰好我知道了这个就是著名的梵塔问题 你可以参看这里 http://www.baidu.com/s?ct=0&ie=gb2312&bs=%d3%d0%c8%fd%b8%f9%d6%f9%d7%d3+64&sr=&z=&cl=3&f=8&wd=%e8%f3%cb%fe%ce%ca%cc%e2 http://cache.baidu.com/c?word=%e8%f3%3b%cb%fe%3b%ce%ca%cc%e2&url=http%3a//www%2enuist%2eedu%2ecn/courses/jsj/gd%5fjsj%5f003b/text/chapter5/sectoin1/right1%5f12%2ehtm&b=0&a=159&user=baidu
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯