动态规划——数字金字塔【集训笔记】

题目描述

观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。
 


在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。

输入

第一个行包含R(1≤ R≤1000),表示行的数目。
后面每行为这个数字金字塔特定行包含的整数。
所有的被供应的整数是非负的且不大于100。

输出

单独的一行,包含那个可能得到的最大的和。

样例输入1

5
13
11 8
12 7  26
6  14 15 8
12 7  13 24 11

样例输出1

86

提示/说明

标签

普及 其他 递归 递推 记忆化搜索 动态规划基础

方法一

暴搜

时间超限67

方法二

顺推

动规

状态转移方程:

向左走:f[i+1][j]>f[i][j]+a[i+1][j]?f[i+1][j]:f[i][j]+a[i+1][j]

向右走:f[i+1][j+1]>f[i][j]+a[i+1][j+1]?f[i+1][j+1]:f[i][j]+a[i+1][j+1]

代码:

#include<iostream>
using namespace std;
#define MAXN 1010
int a[MAXN][MAXN],f[MAXN][MAXN];
int n;
int main(){cin>>n;for(int i=0;i<n;i++){for(int j=0;j<i+1;j++){cin>>a[i][j];}}f[0][0]=a[0][0];for(int i=0;i<n-1;i++){for(int j=0;j<i+1;j++){f[i+1][j]=f[i+1][j]>f[i][j]+a[i+1][j]?f[i+1][j]:f[i][j]+a[i+1][j];f[i+1][j+1]=f[i+1][j+1]>f[i][j]+a[i+1][j+1]?f[i+1][j+1]:f[i][j]+a[i+1][j+1];}}int ans=f[n-1][0];for(int i=1;i<n;i++){ans=ans>f[n-1][i]?ans:f[n-1][i];}cout<<ans;return 0;
}

方法三:逆推

#include<iostream>
using namespace std;
int n;
int a[1005][1005],f[1005][1005];
int main(){cin>>n;for(int i=0;i<n;i++){for(int j=0;j<i+1;j++){cin>>a[i][j];}}for(int i=0;i<n;i++){f[n-1][i]=a[n-1][i];}for(int i=n-2;i>=0;i--){for(int j=0;j<i+1;j++){f[i][j]=a[i][j]+(f[i+1][j]>f[i+1][j+1]?f[i+1][j]:f[i+1][j+1]);}}cout<<f[0][0];return 0;
}

方法四:记忆化搜索

#include<bits/stdc++.h>
#define maxx 1005
using namespace std;
int r,a[maxx][maxx],f[maxx][maxx];
int dfs(int x,int y){if(f[x][y]>=0) return f[x][y];if(x==r) f[x][y]=a[x][y];else f[x][y]=max(dfs(x+1,y),dfs(x+1,y+1))+a[x][y];return f[x][y];
}
int main(){cin>>r;for(int i=1;i<=r;i++){for(int j=1;j<=i;j++){cin>>a[i][j];}}memset(f,-1,sizeof(f));cout<<dfs(1,1)<<'\n';return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Verilog基础:强度建模与net型信号的多驱动问题(三)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 四、一般情况下的net型信号的线与组合&#xff08;线网多驱动&#xff09; 在Verilog基础&#xff1a;强度建模与net型信号的多驱动问题&#xff08;二&#xff0…

如何无公网ip实现SSH远程访问本地局域网openEuler系统?

文章目录 1. 本地SSH连接测试2. openEuler安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 欧拉操作系统(openEuler, 简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、边缘openEuler是面向数字基础设施的操作系…

Linux与windows互相传输文件之rzsz命令

文章目录 关于rzsz安装软件使用命令方法一&#xff1a;直接拖拽方法二&#xff1a;直接在终端输入rz 关于rzsz 这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件 安装完毕之后可以通过拖拽的方式将文件上传过去 首先看一下我们的机器可以使用网络吗&#xff…

python强大的hook函数

什么是hook&#xff1f; 钩子函数&#xff08;hook function&#xff09;&#xff0c;可以理解是一个挂钩&#xff0c;作用是有需要的时候挂一个东西上去。具体的解释是&#xff1a;钩子函数是把我们自己实现的hook函数在某一时刻挂接到目标挂载点上。 hook应用场景&#xff…

SCT9431FSAR:3.8V-36V输入,3A同步降压DCDC转换器,具有EMI降低功能;替代AP63356/7

• 3.8V-36V宽输入电压 • 高达3A的连续输出负载电流 • EMI降低 o 专有的门设计&#xff0c;用于交换节点无振铃 o 扩频&#xff08;FSS&#xff09; • 轻负载条件下具有22uA静态电流的脉冲跳过模式&#xff08;PSM&#xff09; o 在1mA轻负载下效率高达79% o 在10mA轻负载…

负载均衡-Ribbon-自定义负载均衡算法

1.Ribbon 是什么 SpringCloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具主要功能是提供客户端的软件负载均衡算法&#xff0c;将 Netflix 的中间服务处连接在一起Ribbon的客户端组件提供一系列完整的配置项&#xff0c;如&#xff1a;连接超时、重试等。简…

AlmaLinux 8.9 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演示环境下进行的&#xff0c;演示环境中没有任何有价值的数据&#xff0c;但这并不代表摆在你面前的环境也是如此。生产环境…

「优选算法刷题」:在排序数组中查找元素的第一个和最后个位置

一、题目 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1&a…

Go 的 Http 请求系统指南

文章目录 快速体验请求方法URL参数响应信息BodyStatusCodeHeaderEncoding 图片下载定制请求头复杂的POST请求表单提交提交文件 CookieClient 上设置 Cookie请求上设置 Cookie 重定向和请求历史超时设置总超时连接超时读取超时 请求代理错误处理总结 前几天在 “知乎想法” 谈到…

【英文干货】【Word_Search】找单词游戏(第1天)

本期主题&#xff1a;Mindfulness&#xff08;意识力&#xff09; 本期单词&#xff1a; Awareness 意识 Breathing 呼吸 Calm 平静的 De-Stress 减压 Feelings 感受&#xff0c;情感 Inspection 调查 Meditation 冥想 Peace 和平 Quiet 安静的 Recollection 回忆 R…

2.【SpringBoot3】用户模块接口开发

文章目录 开发模式和环境搭建开发模式环境搭建 1. 用户注册1.1 注册接口基本代码编写1.2 注册接口参数校验 2. 用户登录2.1 登录接口基本代码编写2.2 登录认证2.2.1 登录认证引入2.2.2 JWT 简介2.2.3 登录功能集成 JWT2.2.4 拦截器 3. 获取用户详细信息3.1 获取用户详细信息基本…

SDCMS靶场通过

考察核心&#xff1a;MIME类型检测文件内容敏感语句检测 这个挺搞的&#xff0c;一开始一直以为检查文件后缀名的&#xff0c;每次上传都失败&#xff0c;上传的多了才发现某些后缀名改成php也可通过&#xff0c;png图片文件只把后缀名改成php也可以通过&#xff0c;之前不成功…