(七)穷竭搜索

本文深入探讨递归函数的概念及其应用,通过斐波那契数列实例展示递归的威力。同时,介绍栈和队列的基本操作,以及它们在C++中的实现。进一步解析深度优先搜索(DFS)和广度优先搜索(BFS)的思想与应用,通过具体问题给出解题思路。此外,文章还讨论特殊状态的枚举与剪枝技巧,提高算法效率。最后,阐述栈内存和堆内存的区别,帮助理解程序运行时的数据存储。

递归函数

                 再次调用自身的行为成为递归

                应用与斐波那契数列

               实现一种LIFO能力,具备push和pop功能

              C++里面已经含有这种函数

队列

              实现一种FIFO能力,具备push和pop功能

              C++里面已经含有这种函数


深度优先搜索(DFS)

              思想:从某个状态开始,不断转移状态,直至无法转移,然后回退前一步,继续转移其他状态,如此不断循环,直至找到最终解。

             利用深度优先搜索的思想解下题:


题二:


广度优先搜索(DFS)

             思想:总是搜索距离初始状态近的状态。

             深度优先搜索(隐式)利用栈进行计算,而广度优先搜索利用了队列进行计算。

             利用广度优先搜索思想解下题:


特殊状态的枚举

          利用n个元素共n的阶乘种不同的排列生成出来。


剪枝

        思想:有些状态无论如何都不存在解的时候,我们需要直接跳过搜索,这一方法成为剪枝。


栈内存和堆内存

       主调函数所拥有的局部变量存储在特点的内存区域,这些区域成为栈,另外用new和malloc申请的区域成为堆内存。栈内存在程序启动时被统一分配,并不再扩大。全局变量被保存在堆内存区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值