首先补充一下之前的迪杰斯特拉算法,也可以用堆的形式来实现,不过这个是肯定不能用系统提供的堆来实现的,因为这里有一个新发现的更小的路径,要修改堆的数据。
所以自己写堆的本领是必须要的,堆的底层结构是一个数组,然后最好我们设置一个node和数组位置的map、

暴力递归就是尝试

1.把问题转化为规模缩小了的同类问题的子问题
2.有明确的不需要继续进行递归的条件
3.有当得到了子问题的结果之后的决策过程
4.不记录每一个子问题的解
一定要学会怎么去尝试,因为这个是动态规划的基础

最最经典的就是汉诺塔问题了

三两个盘子的时候,我们靠人脑自己就可以想到个大概的走法
但是如果是n的盘子呢?
其实我们可以这样想,我们就是要把n-1个盘子挪到中间,把第n个盘子移动到右边,再把n-1个挪到右边。就可以了。(有没有一种大象装冰箱的感觉)
这个问题规模可以很大,但是实际上代码很简单。
这里如果一定都要从全局来理解的话,那其实是很难的,练递归看局部满足规则就可以了。

既然说到了汉诺塔,那我们又怎么能忘记了子序列问题呢?

这里我们需要注意的是,递归函数表示的是到了i位置,我们两种选择分别要怎么做,所以我们需要传递这两个选择实现之后的结果
这里其实我们也可以利用空间复用来实现,这样稍微节省一下空间,也就是递归中系统栈的保留机制的利用

说了子序列,我们再看看全排列吧

全排列要做的其实就是我们用一个字符串str存储我们之前做的选择

分支界限法,其实就是剪枝技巧,不改变时间复杂度,但是优化常数时间

有一些A*算法的感觉
绝顶聪明的选手来玩纸牌,就是自己这边能得到的和后手能选到的最好的情况

不申请额外的数据结构,只用递归函数来逆序一个栈
这道题就是一个考验递归技法的题目,讲真递归原来这么秀
充分的利用了递归函数的系统栈的功能,

1对应A,11对应K,这样循环往下的对换关系,给定一个数字,看我们最多有多少可能结果

这里我们需要把字符区分一下
0:不行,换不了
1-2:要纠结一下,可以单个换,也可以和后面的结合
3-9:省事了,直接换
之后确定终结情况:
○ 长度达标,走完了,返回1种
○ 这是走到0了,那不对,虽然前面有效,但是我这里换不了。
○ 走到1了,纠结一下,一个是自己单个走,如果后面还有,就是i,i+1一起作为一个部分来看后续。
○ 走到2了,比1多一个判断,因为26就到头了

既然动态规划就是暴力递归的一种,那我们是不是背包问题也可以做

0号要不要,1要不要直接一个个展开就可以
当然了,尝试的方式那是很多的

不过上面两个里面,第二个是最好的,因为他的可变参数形式简单数量少,因为只有这样才好改动态规划

那么我们再来看看n皇后问题看看怎么样?是不是也是一个标准的暴力递归方法呢?
是的。其实这个问题就是一个用来测试集群计算能力的问题了

算法补天系列之——暴力递归相关推荐

  1. 算法入门篇九 暴力递归

    牛客网 左程云老师的算法入门课 暴力递归 原则  汉诺塔问题 问题 打印n层汉诺塔从左边移动到最右边的过程 思想 一共六个过程,左到右.左到中,中到左,中到右,右到左,右到中,互相嵌套使用 左到右 将 ...

  2. 算法设计与分析 暴力递归

    暴力递归 概述 题目一:汉诺塔问题 题目二:字符串的全部子序列问题 题目三:字符串的全排列问题(分支限界) 题目四:拿纸牌比最大问题 题目五:递归逆序栈 题目六:数字与字符串的转化问题 题目七:重量和 ...

  3. 算法补天系列之——前缀树+贪心算法

    介绍前缀树 经典的前缀树,字符都是在路上的,节点是为了边的存在而存在的,有路就可以复用. 那么前缀树对应的数据结构是什么样的呢? 对于节点构建结构,设置一个int pass(表示路径途径这个节点的次数 ...

  4. 算法补天系列之有序表的四种实现方式——AVL树,SB树,红黑树,跳表(重点)介绍说明

    有序表(MAP):除了支持哈希表所有操作之外,是有序组织的,可以知道排序的. 其实红黑树,AVL,SB数,跳表这四种结构都可以实现有序表.时间复杂度是一个级别的.一般SB树常用一些,因为结合题目修改成 ...

  5. 蓝桥杯算法竞赛系列第二章——深入理解重难点之递归(上)

    铁汁们,递归(下)已经更新咯,欢迎铁汁们批评指正. 蓝桥杯算法竞赛系列第二章--深入理解重难点之递归(下)_安然无虞的博客-CSDN博客 目录 一.递归是什么? 二.如何理解"递归" ...

  6. 数据结构与算法之暴力递归改动态规划

    数据结构与算法之暴力递归改动态规划 目录 二维数组最小路径和 暴力递归改动态规划解析 任意选择数组arr中的数字,看能不能累加得到aim 1. 二维数组最小路径和 (一) 题目描述 (二) 思路 递归 ...

  7. 【算法-Java实现】 换钱的方法数(暴力递归法)

    [算法-Java实现] 换钱的方法数(暴力递归法) 文章目录 [算法-Java实现] 换钱的方法数(暴力递归法) 一.问题描述: 二.问题解答: **举例:** **思路:==暴力递归==** 三.算 ...

  8. 从贪心算法到暴力递归法——从局部最优到整体最优

    从递归看动态规划 前情提要 最优问题的本质 目标函数 最优组合的求解策略 枚举 递归 斐波那契数列 问题描述 示例 解题思路 迭代 递归 深入理解递归 堆栈与递归的状态存储 递归与回溯 树形结构与深度 ...

  9. C++两个函数可以相互递归吗_[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进

    [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. ...

最新文章

  1. 最强大,最简洁的【禁止输入中文】
  2. 微信小程序把玩(二十七)audio组件
  3. 激活策略 查询_5个提问,详细介绍北极星指标的策略框架
  4. icse ccf_ICSE的完整形式是什么?
  5. uni-app 写了一个网易云微信小程序
  6. matlab混合编程 mex,求教:matlab混合编程关于mex内自定义函数的输出
  7. java怎么调用python_如何在Java中调用Python代码
  8. Java 对象的串行化(Serialization)
  9. android 文件管理 显示缩略图,如何创建从Android视频文件路径视频缩略图
  10. Linux 上部署 Seafile 9.0.x 专业版(Seafile Server端)——踩一路坑,溅一身水
  11. linux .cache目录,关于linux系统下的cache Memory
  12. 手机微信和QQ接收到的文件路径
  13. 《数据结构教程(李春葆主编 第五版)》第一章源代码 + 《数据结构》上机实验(第九章) —查找
  14. 小程序_动态设置tabBar主题皮肤
  15. 我把视频变成链接_如何把长链接变成短链接?3个工具帮你实现
  16. 音频原始数据能量检测算法
  17. Cobar Client的使用
  18. oracle数据库更换字符集(AL32UTF8--> ZHS16GBK)
  19. mac虚拟机桌面图标隐藏_「MAC软件推荐」MAC实用软件
  20. CA6110发动机曲轴的加工工艺及夹具设计-说明书+外文翻译+夹具体+毛配图+曲轴零件图+夹具装配图+垫块图+工艺卡片10张

热门文章

  1. 不知道新的行业资讯?要想技术不落伍程序员必看!
  2. 知道创宇区块链安全实验室|危险的授权转账-- Li.Finance 攻击事件始末
  3. 向量叉乘=====求法向量
  4. 计算机10分钟不用就自动重启,Win10开机后提示你的电脑将在一分钟后自动重启的解决办法...
  5. --django--
  6. 最牛逼程序员自我修养反观认识运动路-中国职场江湖的人情世故--喝酒应酬
  7. 爬虫问题之Unknown command: crawl
  8. .NET MVC中controler层返回值常见类型
  9. 再不给自己充充电,只怕到了40岁,还得每天为赶公交挤地铁犯愁
  10. 周鸿祎称搭不上ChatGPT企业会被淘汰;马斯克会议现场解雇推特高级工程师;同时应聘十几个工作靠裁员补偿年入千万 | EA周报...