动态规划—数字三角形
时间:2020-04-13
本文章向大家介绍动态规划—数字三角形,主要包括动态规划—数字三角形使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
动态规划——数字三角形
题目描述
请编一个程序根据展示出的三角形,计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。
每一步可沿左斜线向下或右斜线向下走;
三角形行数小于等于100;
三角形中的数字为整数;
输入描述
第一行为N,表示有N行
后面N行表示三角形每条路的路径权
输出描述
路径所经过的数字的总和最大的答案
样例
输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出
30
样例解析
7 -> 3 -> 8 -> 7 -> 5=30
动态规划
1.三角形数组存储方法
二维数组,双层循环,
for(int i=1;i<n;i++){
for(int j=0;j<i+1;j++){
}
}
2.错误思路:
每次找下面两个元素的最大值,以此类推
(错误)代码:
f[i][j]=max(s[i-1][j],s[i-1][j-1]);
反例:
如果另一条路下面有一个非常大的,就不合适了
3
1 4
1000 9 4
很明显,就是错误的
3.正确思路:
递推关系式,用另一个数组f表示当前状态,即
f[i][j]=max(f[i-1][j],f[i-1][j-1])+s[i][j];
#include <bits/stdc++.h> using namespace std; int main(){ int n,maxx=-1; cin>>n; int s[101][101]; int f[101][101]; long long sum=0; for(int i=0;i<n;i++){ for(int j=0;j<i+1;j++){ cin>>s[i][j]; } } f[0][0]=s[0][0]; for(int i=1;i<n;i++){ for(int j=0;j<i+1;j++){ f[i][j]=max(f[i-1][j],f[i-1][j-1])+s[i][j]; } } for(int j=0;j<n;j++){ if(maxx<f[n-1][j]){ maxx=f[n-1][j]; } } cout<<maxx; return 0; }
原文地址:https://www.cnblogs.com/AK-IOI/p/DP.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用Prometheus监控Flink
- 微服务[学成在线] day04:页面静态化
- Spring Boot 整合Mybatis代码生成插件
- Spring Boot 配置文件
- Hello Spring Boot
- Spring Boot 整合Druid
- Spring Boot 整合JDBC
- Spring Boot 整合SpringSecurity
- jacoco-maven-plugin:prepare-agent
- 【LeetCode】两数之和
- 【LeetCode】回文数
- RestTemplate 发送 Https 请求调用
- 【LeetCode】整数反转
- Windows 中搭建Zookeeper的搭建
- 刷题利器 LeetCode