移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上
(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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯