| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> dp第一 数字三角形 Number Triangles 逆序思想 -> 正文阅读 |
|
[数据结构与算法]dp第一 数字三角形 Number Triangles 逆序思想 |
分析题干,发现从上面往下一步步走很麻烦,直接搜索肯定超时。所以,逆向求解。 看样例分析:
若从倒数第二排的‘2’开始走,只有2个选择,往左下方和右下方。 往左下方是‘4’,得到的最终值为6,往右下方是‘5’,得到的最终值是7.这时当然选择右下方。 我们就将‘2’改写成2+5=7。 再次考虑倒数第二排的7, 同理,应选择左下,得到最终值是12。还是将‘7’改写成5+7=12。 依次类推则倒数第二排变为:
原数字三角形变为:
这时再考虑第三行第一个。有两种选择:左下和右下。 假设走左下方,由于这时左下的值已经是从左下开始走到底的最优值,我们不需要在选择下一步怎么走,直接加上左下的值即可。 同理,走右下时,直接加上右下的值即可。因为此时右下的值已经是从右下走到底的最优值,不需要选择了。 再比较走两条路的值,右边的值更大,选择右边的值。则第三行的第一个值更新为8+12=20。 以此类推,得到下面的数字三角形:
同理,更新第二排,有:
最后一个了,有:
起点的值保存了从起点到终点的最优值,也就是答案。详见代码:
|
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:20:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |