数字三角形问题(数塔问题)
数字三角形问题(数塔问题)
- Description
- 下图给出了一个数字三角形,请编写一个程序,计算从顶至底的某处的一条路径,使该路径所经过的数字和最大
- Input
- 有很多个测试案例,对于每一个测试案例, 通过键盘逐行输入,第1行是输入整数(如果该整数是0,就表示结束,不需要再处理),表示三角形行数n,然后是n行数
- Output
- 输出最大值
Example Input
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
Example Output
30
代码块
#include<iostream>
#include<cmath>
#define MAX 1000
using namespace std;
int data[MAX][MAX]; //储存原始数据
int dp[MAX][MAX]; //储存刷新后的数据
int tower_walk(int n)
{//dp初始化for(int i=0; i<n; i++)dp[n-1][i] = data[n-1][i];int temp_max; //取最大值for(int i=n-2; i>=0; i--)for(int j=0; j<=i; j++){temp_max = max(dp[i+1][j],dp[i+1][j+1]);dp[i][j] = temp_max + data[i][j];}
}//打印和最大路径
int print(int n)
{cout << "最大路径和:" << dp[0][0] << endl;int node_value;//首先输出塔顶元素cout << "最大路径:" << data[0][0];int j=0;for(int i=0; i<n; i++){if(node_value == dp[i][j+1])j++;cout << " -> " << data[i][j]; } cout << endl;
}int main()
{int n; //有n行cin >> n;for(int i=0; i<n; i++)for(int j=0; j<=i; j++)cin >> data[i][j]; tower_walk(n);cout << dp[0][0] << endl; //最大值储存在dp[0][0]中return 0;}
数字三角形问题(数塔问题)相关推荐
- 【算法】【动态规划篇】第3节:数字三角形问题
本期任务:介绍算法中关于动态规划思想的几个经典问题 [算法][动态规划篇]第1节:0-1背包问题 [算法][动态规划篇]第2节:数字矩阵问题 [算法][动态规划篇]第3节:数字三角形问题 [算法][动 ...
- 算法.动态规划 导航/数塔取数字问题
目录 前言 从1+1开始 总结下概念 地图到图 回头看 代码 动态规划经典问题 前言 下面的概念和公式可能会吓到你,看不懂没关系,就是让你恶心的.反正我看着也挺恶心,专业就是让你看不懂,看懂了怎么能叫 ...
- codevs——1220 数字三角形(棋盘DP)
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一 ...
- Bailian2760 数字三角形【DP】
2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...
- 51Nod-1002 数塔取数问题【DP】
1002 数塔取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值. 每次只能走到下一层相 ...
- 数字三角形的多种解法思路
如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值最大. 输入描述 Input Description 第一行是数塔层数N(1<= ...
- 蓝桥杯——算法训练——数字三角形
蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...
- 算法训练 数字三角形
算法训练 数字三角形 时间限制:1.0s 内存限制:256.0MB 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字 ...
- 【蓝桥杯】 算法训练 数字三角形
历届试题 数字三角形 问题描述 在下面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能往左下或 右下走.只需要求出这个最大和即可,不必给出具体路径. 三角 ...
最新文章
- uart口图片_认识UART接口
- python语言中文社区-Python 之父谈 Python-Go语言中文社区
- CEikEdWin 类的使用
- OCH\OMS\OTS\MSP\RS\SPI解释
- mysql行级视图与列级视图_[数据库]--DML、DDL、TCL语言
- apollo 配置中心_Apollo配置中心搭建笔记
- Python 面向对象编程:类的创建与初始化、实例属性与方法、类属性与方法
- mysql5.7.10 二进制包_MYSQL5.7二进制包的安装
- (21)xilinx PCIE 开发方法(学无止境)
- NVIDIA Tesla K40C 的各项性能参数
- 上海计算机应用基础自考上机,上海2012年自考《计算机应用基础》上机考核大纲...
- 使用MIB来监控你的应用(tuxedo mib)
- 用L2TP与OpenSwan构建IPSec ×××(使用X.509证书认证)
- jsoneditor
- Deep Learning for Image and Point Cloud Fusionin Autonomous Driving: A Review
- 【Matlab学习笔记】数据拟合polyfit与polyval
- 关于ESD的一些知识
- 前端 Vue 浏览器调试工具 Vue.js devtools 安装
- [苹果开发者账号]01 使用Apple Developer app注册提示:未能验证证件
- android 系统的切图方式_UI设计规范一Android尺寸单位换算及切图规范