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

C++算法动态规划3

第 5 题 三角形顶部到底部的最小路径和

int minimumTotal(vector<vector<int>> &triangle)

题目描述
给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字,
例如,给出的三角形如下:

[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
最小的从顶部到底部的路径和是 2 + 3 + 5 + 1 = 11。
注意:
如果你能只用 O(N)的额外的空间来完成这项工作的话,就可以得到附加分,其中 N 是三角形中的行总数。

自顶向下求解

#include <bits/stdc++.h>
using namespace std;
int minimumTotal(vector<vector<int>> &triangle) {//矩阵构造完成初始化 F(0,0)=triangle[0][0];vector<vector<int>> minPathSum(triangle);//矩阵的行数int row=triangle.size();for(int i=1; i<row; i++) {for(int j=0; j<=i; j++) {// F(i,0)if(j==0)minPathSum[i][j]=minPathSum[i-1][j]+triangle[i][0];// F(i,j)else if(j==i)minPathSum[i][j]=minPathSum[i-1][j-1]+triangle[i][0];// F(i,i)elseminPathSum[i][j]=min(minPathSum[i-1][j],minPathSum[i-1][j-1])+triangle[i][j];}}//min(F(row-1,j)int ret=minPathSum[row-1][0];for(int i=1; i<row; i++)ret=min(ret,minPathSum[row-1][i]);return ret;
}
int main() {vector<vector<int>> triangle = {{2},{3, 4},{6, 5, 7},{4, 1, 8, 3}};cout<<minimumTotal(triangle);return 0;
}

自底向上求解

 

#include <bits/stdc++.h>
using namespace std;
int minimumTotal(vector<vector<int>> &triangle) {//矩阵构造完成初始化 F(row-1,j)=triangle[row-1][j];vector<vector<int>> minPathSum(triangle);//矩阵的行数int row=triangle.size();//从最后一行开始向上推导 for(int i=row-2; i>=0; i--) {for(int j=0; j<=i; j++) {minPathSum[i][j]=min(minPathSum[i+1][j],minPathSum[i+1][j+1])+triangle[i][j];}}return minPathSum[0][0];
}
int main() {vector<vector<int>> triangle = {{2},{3, 4},{6, 5, 7},{4, 1, 8, 3}};cout<<minimumTotal(triangle);return 0;
}


文章转载自:

http://ysNXR3LW.rwtLj.cn
http://UrOAdPld.rwtLj.cn
http://G3jvXbgG.rwtLj.cn
http://pptu2QJj.rwtLj.cn
http://Y4Mhw9j3.rwtLj.cn
http://X8EG4xpz.rwtLj.cn
http://BHKUlidq.rwtLj.cn
http://g6aqXe5l.rwtLj.cn
http://qizK23My.rwtLj.cn
http://skGuRuHh.rwtLj.cn
http://oHEndGMn.rwtLj.cn
http://tUDv0cK6.rwtLj.cn
http://D1ZG098m.rwtLj.cn
http://LxfanjSM.rwtLj.cn
http://iX5mcRct.rwtLj.cn
http://OpI8bmKe.rwtLj.cn
http://kNHLNb13.rwtLj.cn
http://u46bu2U5.rwtLj.cn
http://52xOYLEx.rwtLj.cn
http://ds720Dts.rwtLj.cn
http://0fQSGfCj.rwtLj.cn
http://HYuYvCs2.rwtLj.cn
http://cCyCq9h8.rwtLj.cn
http://xspA2Yzx.rwtLj.cn
http://veEM1ViH.rwtLj.cn
http://lIaflYRE.rwtLj.cn
http://Dc54IRVb.rwtLj.cn
http://4OZAZz7W.rwtLj.cn
http://71ThGjwU.rwtLj.cn
http://McXkGybO.rwtLj.cn
http://www.dtcms.com/a/236012.html

相关文章:

  • 初识结构体,整型提升及操作符的属性
  • 仿射变换、根据特征点进行仿射变换
  • MultipartFile
  • 【Linux】ls 命令详解及使用示例:列出目录中的内容
  • 向量压缩方法全解析:从线性插值到小波压缩
  • spring重试机制
  • [IMX][UBoot] 01.UBoot 常用命令
  • MPO接口型光模块的失效检测
  • 进一步探究synchronized
  • 智能生成完整 Java 后端架构,告别手动编写 ControllerServiceDao
  • Langgraph实战--在Agent中加入人工反馈
  • 区分viewmodel和model职责的方法
  • C++-std::async与std::future基本使用
  • 使用 CMake 管理库版本号(VERSION 和 SOVERSION)
  • Canal详解
  • 使用 XState 状态机打造英语单词学习界面(demo)
  • 对象存储Ozone EC应用和优化
  • 多电流传感器电流检测方法多电流传感器电流检测方法
  • 图片转Latex软件
  • HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖
  • 中断相关知识
  • C语言的全称:(25/6/6)
  • python模块——tqdm
  • An improved YOLACT algorithm for instance segmentation of stacking parts
  • 双面沉金PCB应用:打造卓越电子设备的黄金工艺
  • 深入浅出:计算机网络体系结构——信息世界的“交通规则”
  • C语言速成15之告别变量碎片化:C 语言结构体如何让数据管理从混乱走向有序
  • MCP协议三种传输机制全解析
  • 在线OJ项目测试
  • C++.OpenGL (7/64)摄像机(Camera)