6581 Number Triangle

news2024/11/16 18:40:59

这个问题可以通过动态规划来解决。我们可以从三角形的顶部开始,然后逐行向下计算每个位置的最大和。对于三角形中的每个位置,我们可以选择从其上方或左上方的位置移动到该位置,所以该位置的最大和就是其上方或左上方位置的最大和加上该位置的值。最后,三角形底部的最大值就是我们要找的最大和。

以下是C++代码实现:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<vector<int>> triangle(n, vector<int>(n));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            cin >> triangle[i][j];
        }
    }

    vector<vector<int>> dp(n, vector<int>(n));
    dp[0][0] = triangle[0][0];
    for (int i = 1; i < n; i++) {
        dp[i][0] = dp[i - 1][0] + triangle[i][0];
        dp[i][i] = dp[i - 1][i - 1] + triangle[i][i];
        for (int j = 1; j < i; j++) {
            dp[i][j] = max(dp[i - 1][j - 1], dp[i - 1][j]) + triangle[i][j];
        }
    }

    int maxSum = dp[n - 1][0];
    for (int i = 1; i < n; i++) {
        maxSum = max(maxSum, dp[n - 1][i]);
    }

    cout << maxSum << endl;

    return 0;
}

在这段代码中,我们首先读取输入的三角形的行数n,然后读取三角形的数据。然后我们创建一个动态规划数组dp,dp[i][j]表示从三角形的顶部到位置(i, j)的最大和。然后我们逐行计算dp的值。对于三角形中的每个位置,我们可以选择从其上方或左上方的位置移动到该位置,所以dp[i][j]就是dp[i - 1][j - 1]和dp[i - 1][j]中的最大值加上triangle[i][j]。最后,我们找出dp[n - 1]中的最大值,这就是我们要找的最大和。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1972069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划---观察优化枚举(股票系列问题)

121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; public class Code01_Stock1 {public static int maxProfit(int[] prices) {int ans 0;for (int i 1, min prices[0]; i < prices.length; i) {// min : 0...i范围上的最小值min Math.min(min, prices…

Android图像显示SurfaceFlinger总结

1 介绍 1.1 框架中位置 ​​ 上图为Android的图形显示系统框架图。 首先上层应用通过ViewRoot的scheduleTraversals函数发起绘制任务&#xff0c;并通过HWUI调用OpenGL接口将绘制数据传递给GPU处理&#xff1b;SF会接收所有应用更新的绘制数据&#xff0c;并根据Z-Order、透明…

实现一个自定义前端脚手架

一、背景 什么前端脚手架&#xff1f; 前端脚手架是一种工具&#xff0c;用于快速搭建前端项目的基础结构&#xff0c;提供了一套约定和标准&#xff0c;帮助开发人员快速启动项目开发。常见的前端脚手架包括Create React App、Vue CLI、Angular CLI、nestjs/cli等。 我为什么…

C语言——二维数组和字符数组

二维数组 二维数组本质上是一个行列式的组合&#xff0c;也就是二维数组是有行和列两部分构成。二维数组数据是通过行列进行解读。 定义形式&#xff1a; 类型&#xff08;说明符&#xff09; 数组名[行数&#xff08;常量表达式1&#xff09;][列数&#xff08;常量表达式…

nginx负载均衡、java、tomcat装包

一、nginx 七层负载均衡 1、七层负载均衡基础配置 2、负载均衡状态 [rootserver]# vim /usr/local/nginx/conf/nginx.confworker_processes 1;event {worker_connections 1024&#xff1b;}http { # 七层负载均衡支持http、ftp协议include mime.types;default_type app…

T3学员领取资料通知0803

T3学员领取资料通知0803 各位学员∶本周MF系列VBA技术资料增加671-680讲&#xff0c;T3学员看到通知后请免费领取,领取时间8月2日晚上19:00-8月3日12:00。本次增加内容&#xff1a; MF671:Shell命令输出计算机的详细信息 MF672:Shell命令输出网络配置信息 MF673:解锁和启用…

QtQuick Text-文本省略

效果 import QtQuickColumn{spacing: 20Text{width: 200text: qsTr("1使文本在单行中对于超出部分不要进行省略")font.pointSize: 20}Text{width: 200elide: Text.ElideLefttext: qsTr("2使文本在单行中对于超出部分从左边进行省略")font.pointSize: 20}Te…

【协作提效 Go - gin ! swagger】

什么是swagger Swagger 是一个用于设计、构建、记录和使用 RESTful Web 服务的工具集。它的主要作用包括&#xff1a; API 文档生成&#xff1a;Swagger 可以自动生成详细的 API 文档&#xff0c;包括每个端点的请求和响应格式、参数、状态码等。这使得开发者和用户可以轻松理…

【香橙派系列教程】(五)Linux的热拔插UDEV机制

【五】Linux的热拔插UDEV机制 在上一篇中我们发现&#xff0c;当手机接入开发板时&#xff0c;系统并不认识&#xff0c;当我们在/etc/udev目录下创建一个规则后&#xff0c;就可以通过adb访问到手机了&#xff0c;这里到底是怎么回事&#xff1f; 文章目录 【五】Linux的热拔插…

【Python】数据类型(上)

本篇文章将讲解&#xff1a; &#xff08;1&#xff09;整型 &#xff08;2&#xff09;布尔类型 一&#xff1a;整型 整型其实就是十进制整数的统称&#xff0c;例如&#xff1a;1 666 都属于整型。 &#xff08;1&#xff09;定义 num11 age45 &#xff08…

【网络】网络入门(第一篇)

网络入门可以从多个方面开始&#xff0c;以下是一个基本的网络入门指南&#xff0c;涵盖了网络的基本概念、网络类型、网络协议、网络拓扑、网络设备以及网络地址等方面。 一、网络基本概念 计算机网络&#xff1a;将多个计算机系统和设备连接在一起&#xff0c;以实现资源共…

Opencv学习-LUT函数

这个函数大概意思根据自己设定的查找表&#xff0c;改变原本像素点值 例如&#xff1a;我们想将一张图片灰度为0-100的像素的灰度变成0,101-200的变成100,201-255的变成255。我们就可已建立如下的一张表格 ​​​​​​​ ​​​​​​​ ​​​​​​​…

Studying-代码随想录训练营day52| 101.孤岛的总面积、102沉没孤岛、103.水流问题、104.建造最大岛屿

第52天&#xff0c;图论part03&#xff0c;岛屿问题继续&#xff01;&#xff01;&#x1f4aa;(ง •_•)ง&#xff0c;编程语言&#xff1a;C 目录 101.孤岛的总面积 102沉没孤岛 103.水流问题 104.建造最大岛屿 101.孤岛的总面积 文档讲解&#xff1a;手撕孤岛的总…

昇思25天学习打卡营第XX天|SSD目标检测

感觉目标检测还是yolo相对最火&#xff1f;ssd有点老了可以更新下 SSD算法数学描述 SSD算法使用卷积神经网络&#xff08;CNN&#xff09;进行特征提取&#xff0c;并通过多尺度的特征图进行目标检测。设 ( C ) 为CNN输出的特征层数量&#xff0c;( F_i ) 为第 ( i ) 层特征…

【Postman的接口测试工具介绍】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 👉Postman接口.👋 👉Postman是一款常用的API开发测试工具,它提…

Harmony学习(四)(应用程序框架基础)

1.应该程序框架基础 多Module设计机制 模块化开发&#xff1a;一个应用多个功能&#xff0c;每个功能可作为一个模块&#xff0c;Module中可以包含源代码、资源文件、第三方库、配置文件等&#xff0c;每一个Module可以独立编译&#xff0c;实现特定的功能支持多设备&#xf…

jdk的版本匹配 Usage of ApI documented as @since 11+

IDEA 解决 Usage of API documented as since XX 的方法 如下所示&#xff0c;代码已经报错提示。 这个问题的原因是IDEA 设置的jdk Language level 语法级别太低&#xff0c;不适配代码导致的&#xff0c;只要在项目结构中将语法级别调相应的级别就可以了。具体解决思路见下图…

vue-创建自己的CLI脚手架

1.自定义命令和入口配置 首先创建一个文件夹&#xff0c;然后npm init -y生成package.json文件 添加bin命令配置入口文件 新建lib/index.js文件 然后在控制台npm link 建立软连接 、然后执行felix-cli 就可以输出代码 2.查看当前版本号命令 安装 commander npm i commander…

系统架构设计师 - 企业信息化战略与实施

企业信息化战略与实施 企业信息化战略与实施信息与信息化的概念信息的定义信息的特点信息化的概念信息化对组织的意义 信息系统生命周期 ★立项阶段开发阶段运维阶段消亡阶段 信息系统战略规划 ★ ★ ★政府信息化与电子政务 ★企业信息化与电子商务 ★ ★ ★企业资源计划企业资…

2024年让短片制作不再难,4款剪辑软件助你一臂之力!

在这个短视频流行的时代&#xff0c;每一个创意都值得被展现&#xff0c;每一份热情都值得被激发。你是不是也曾经想过&#xff0c;用镜头来讲述你的故事&#xff0c;用剪辑来展示你的才华&#xff1f;今天&#xff0c;我们一起来探索2024年制作高质量短片的秘密武器——4款强大…