dp---数字三角形问题
数字三角形问题
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。
对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最大值。
Input
输入数据的第1行是数字三角形的行数n,1≤n≤100。接下来n行是数字三角形各行中的数字。所有数字在0…99之间。
Output
输出数据只有一个整数,表示计算出的最大值。
Sample Input
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
Sample Output
30
分析:
dp[i][j]姑且称为问题的状态
从下往上分析,要想到dp[1][1]的和最大
你要考虑两个子问题:
1,dp[2][1]要最大
2,或者dp[2][2]要最大
可以发现dp[i][j]只与i+1层有关系
依次往下一层分析即可......
即得到状态转移方程:dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+f[i][j]
它把状态dp[i][j]转移为dp[i+1][j]+dp[i+1][j+1].
最后从最后一层往上计算即得出dp[1][1]。
#include <cstdio>
#include <algorithm>
using namespace std;
const int max1 = 1000;
int f[max1][max1],dp[max1][max1];
int main()
{int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{for(int j=1;j<=i;j++){scanf("%d",&f[i][j]);///输入三角形数字}
}
///边界
for(int j = 1;j <= n;j++)
{dp[n][j]=f[n][j];
}
///从n-1层不断往上走,计算出dp[i][j]
for(int i = n-1; i >=1; i--)
{for(int j = 1; j <= i; j++){dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+f[i][j];}
}
printf("%d\n",dp[1][1]);return 0;
}
dp---数字三角形问题相关推荐
- 经典DP 数字三角形
原题链接: https://www.acwing.com/problem/content/900/https://www.acwing.com/problem/content/900/题目大意: 给定 ...
- lightoj 1004 dp:数字三角形
题目链接:http://lightoj.com/volume_showproblem.php?problem=1004 #include <cstdio> #include <cst ...
- AcWing 1018. 最低通行费【动态规划】【线性DP】【数字三角形】
AcWing 1018. 最低通行费 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 1018. 最低通行费 二.题目分析 (一)算 ...
- C++---数字三角形模型---最低通行费(每日一道算法2023.1.14)
注意事项: 本题为线性dp-数字三角形的扩展题. 题目: 一个商人穿过一个 N×N 的正方形的网格,去参加一个非常重要的商务活动. 他要从网格的左上角进,右下角出. 每穿越中间 1 个小方格,都要花费 ...
- codevs——1220 数字三角形(棋盘DP)
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一 ...
- hihoCoder#1037 : 数字三角形(DP)
[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描写叙述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他 ...
- 蓝桥杯 算法训练 数字三角形(最简单的DP)
传送门 题目描述 如下图示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ● ...
- Bailian2760 数字三角形【DP】
2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...
- (蓝桥杯)数字三角形。。(最简单的dp题)
(图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形 ...
- LQ0072 数字三角形【DP】
题目来源:蓝桥杯2020初赛 C++ C组I题 题目描述 上图给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径. 对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和 ...
最新文章
- 【ES6】异步操作和async函数
- Jenkins+docker+maven+git自动化构建与部署
- python web flask开发框架_零基础入门python web框架Flask开发
- RMAN的一些术语解释
- vant组件搜索并选择_借助PARTsolutions 选型助手,轻松快速地找到组件。
- IntegerCache的妙用和陷阱
- SmartGit破解使用的个人方法
- CSS实现多栏布局的几种方式
- BT下载原理学习简介
- 《Win测试的学习笔记》——Introduction
- 【超详细】| 使用Vmware 安装win7虚拟机
- 学习模式上的记录之统计篇四 关于excel里添加趋势线和回归统计的R square数值不一致的情况
- 软件测试——图书管理系统的测试计划书
- idea常用图标总结
- psv无线怎么连接电脑连接电脑连接服务器,psv如何连接电脑复制视频,音乐,图片等资料教程...
- 软件开发实训(720科技)――第五课:前端css规范
- 智能卡卡发卡流程(收藏4)
- 《别做正常的傻瓜》1——结果偏见
- 使用 wget 整站下载
- php漂浮广告代码,JS随机漂浮广告代码具体实例