DFS

emmm,大概是一年半以前的了,小学期重新学习,我也系统地搞一遍叭,将近一年没动的博客~~~

DFS是和递归紧紧结合的。

递归:某一个方法的自我调用。

用到递归的情形:

1.定义是递归的(阶乘)

2.数据结构是递归的(链表、树)

3.问题的解法是递归的(汉诺塔)

 1、汉诺塔问题:这个博客写的挺好的
https://www.cnblogs.com/dmego/p/5965835.html

https://blog.csdn.net/weixin_42202257/article/details/90313036

思路:

  实现这个算法可以简单分为三个步骤:

    (1)     把n-1个盘子由A 移到 B;

    (2)     把第n个盘子由 A移到 C;

    (3)     把n-1个盘子由B 移到 C;

从这里入手,在加上上面数学问题解法的分析,我们不难发现,移到的步数必定为奇数步:

    (1)中间的一步是把最大的一个盘子由A移到C上去;

    (2)中间一步之上可以看成把A上n-1个盘子通过借助辅助塔(C塔)移到了B上,

    (3)中间一步之下可以看成把B上n-1个盘子通过借助辅助塔(A塔)移到了C上;

2、

 

posted @ 2020-06-30 10:50  ACM-lxh  阅读(105)  评论(0编辑  收藏  举报