当前位置: 首页 > ai >正文

线性DP:数字三角形

 

找路径从上到下找还是从下到上找,分析问题的方法 在于从上往下的话需要考虑从左边下来还是右边下来,那么在左右边界上需要考虑空白边界问题。

从下往上找路径的时候就无需考虑边界判断问题

Dp问题

状态表示

f(i,j)

集合自下而上走到(i,j)位置的路径集合
-
f(i,j)的值存的是什么自下而上走到(i,j)位置的路径长max
-

状态计算

(其实质是集合的划分)

划分左边上来f(i+1,j)+w(i,j)-> f(i,j)
-
右边上来f(i+1,j+1)+w(i,j)-> f(i,j)
-
#include<iostream>
#include<algorithm>
using namespace std;const int N = 510;int n;
int w[N][N], f[N][N];int main() 
{cin >> n;for (int i = 1; i <= n; i++)for (int j = 1; j <= i; j++)cin >> w[i][j];for (int i = 1; i <= n; i++)f[n][i] = w[n][i];//自底向上初始化Dp数组for (int i = n - 1; i; i--)//从倒数第二行开始,则开始时倒数第一行为i+1行for (int j = 1; j <= i; j++)//从左到右f[i][j] = max(f[i + 1][j], f[i + 1][j + 1]) + w[i][j];//f(i,j)节点左下、右下取max加上f(i,j)点本身权重w(i,j)即可保存路径最大值。//顶点即为最大值cout << f[1][1] << endl;return 0;
}

时间复杂度就是遍历一个二维数组,O(n²),1s内C++完成10^7~10^8次计算,500²远小于该数值,可以完成。

小结:说明遍历的顺序也是动态规划类问题的重点关注环节。

http://www.xdnf.cn/news/642.html

相关文章:

  • 2.1 基于委托的异步编程方法
  • 在FVM(有限体积法)的CFD仿真中,AI和机器学习的应用
  • npm link 使用指南
  • 【Rust 精进之路之第11篇-借用·实践】切片 (Slices):安全、高效地引用集合的一部分
  • Day96 | 灵神 | 二叉树 相同的树
  • javaSE.队列
  • Vue.js 简介
  • PCL库编译指南
  • 自然语言处理(9)—— 共现词矩阵及Python实现
  • MySQL完整版进阶及附录
  • STM32 HAL 水位传感器驱动程序
  • WEMOS LOLIN32 开发板引脚布局和技术规格
  • Python数据可视化领域的卓越工具:深入剖析Seaborn、Plotly与Pyecharts
  • 7、sentinel
  • Sentinel源码—6.熔断降级和数据统计的实现二
  • 深入浅出:LDAP 协议全面解析
  • 微前端框架 Wujie
  • Transformer系列(二):自注意力机制框架
  • 【2025最新redis数据结构之Hypeloglog介绍】关于Hypeloglog
  • JBoss + WildFly 本地开发环境完全指南
  • 卷积神经网络综述
  • 【重走C++学习之路】14、多态
  • 第二十节:项目经验-描述一个React性能优化案例
  • 21. git apply
  • 时序预测 | Transformer-LSTM-SVM时间序列预测(Matlab完整源码和数据,适合基础小白研究)
  • 《前端面试题之 Vue 篇(第三集)》
  • 【滑动窗口】找到字符串中所有字⺟异位词(medium)
  • 计算机组成原理笔记(十六)——4.1基本算术运算的实现
  • 8、constexpr if、inline、类模版参数推导、lambda的this捕获---c++17
  • 【滑动窗口】串联所有单词的⼦串(hard)