c++ 动态规划(数塔)
c++ 动态规划(dp)
题目描述
观察下面的数塔。写一个程序查找从最高点到底部任意位置结束的路径,使路径经过数字的和最大。
每一步可以从当前点走到左下角的点,也可以到达右下角的点。

输入
5
13
11 8
12 7 26
6 14 15 8
12 7 13 24 11
输出
86
AC代码
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 505;
int dp[MAXN][MAXN],a[MAXN][MAXN];
int max(int a,int b)//max函数求两个数字之间的最大值
{
    return a>b?a:b;
}
int main()
{
    int n;
    cin >> n;
    for (int i = 1;i <= n;i ++)//输入
    {
        for (int j = 1;j <= i;j ++)
        {
            cin >> a[i][j];
        }
    }
    dp[1][1] = a[1][1];//把起点直接放在dp[]里面
    for (int i = 2;i <= n;i ++)
    {
        for (int j = 1;j <= i;j ++)
        {
            dp[i][j] = max(dp[i - 1][j - 1],dp[i - 1][j]) + a[i][j];//dp公式,原理是先走一步,然后扫描这个点的上一层的邻接点看看哪个点的dp值最大,然后用最大值加上他本身
        }
    }
    int ans = 0;
    for (int i = 1;i <= n;i ++)
    {
        ans = max(ans,dp[n][i]);//ans的作用是在最底部的元素中找一个最大的dp,输出
    }
    cout << ans << endl;
    return 0;
}
另外一种方法
#include <iostream>
#include <string>
#include <algorithm>//STL库函数
using namespace std;
int main()
{
    int t,n,dp[105][105],a[105][105];
    cin >> t;//t组数据
    while (t --)//重复执行直到t组数据都处理完
    {
        cin >> n;//塔的层数
        for (int i = 1;i <= n;i ++)//输入
        {
            for (int j = 1;j <= i;j ++)
            {
                cin >> a[i][j];//把塔转化成数组
            }
        }
        memset(dp,0,sizeof(dp));//把dp的值初始化为0
        for (int i = 1;i <= n;i ++)//把a[]最后一行赋值到dp[],因为最后一行的dp[]就等于最后一行数本身
        {
            dp[n][i] = a[n][i];
        }
        for (int i = n - 1;i >= 1;i --)
        {
            for (int j = 1;j <= i;j ++)
            {
                dp[i][j] = max(dp[i + 1][j + 1],dp[i + 1][j]) + a[i][j];//dp公式,原理是扫描这个点的下一层的邻接点看看哪个点的dp值最大,然后用最大值加上他本身,在把大的值选中
            }
        }
    }
    cout << dp[1][1] << endl;//输出
    return 0;
}
												
											c++ 动态规划(数塔)的更多相关文章
- [ACM_动态规划] 数字三角形(数塔)
		
递归方法解决数塔问题 状态转移方程:d[i][j]=a[i][j]+max{d[i+1][j],d[i+1][j+1]} 注意:1\d[i][j]表示从i,j出发的最大总和;2\变界值设为0;3\递归 ...
 - HDU 2084 数塔(动态规划)
		
数塔 http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描 ...
 - [ACM_动态规划] hdu 1176 免费馅饼 [变形数塔问题]
		
Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁 ...
 - 数塔(hdoj 2084,动态规划递推)
		
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目 ...
 - ACM 杭电HDU 2084 数塔 [解题报告]
		
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
 - 数塔,杭电oj-2048
		
原题地址:http://i.cnblogs.com/EditPosts.aspx?postid=4077291 [Problem Description] 在讲述DP算法的时候,一个经典的例子就是数塔 ...
 - 数塔~~dp学习_1
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 数塔 Time Limit: 1000/1000 MS (Java/Others) Mem ...
 - Hdoj 2084.数塔 题解
		
Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大 ...
 - 数字三角形/数塔问题(DP入门题)
		
有形如下图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大. 样例输入: 5 13 11 8 12 7 26 6 14 15 8 12 7 ...
 
随机推荐
- 开源中国的 IT 公司开源软件整理计划介绍
			
直击现场 <HTML开发MacOSApp教程> http://pan.baidu.com/s/1jG1Q58M 开源中国的 IT 公司开源软件整理计划介绍 oschina 发布于: 20 ...
 - 演练:创建和使用静态库 (C++)
			
我们将创建的下一个库类型是静态库 (LIB). 使用静态库是重用代码的一种绝佳方式. 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可. ...
 - string与QString转换(string既可以是utf8,也可以是gbk)
			
AtUtf8.h #ifndef _QT_UTF8_H #define _QT_UTF8_H #include <QString> #include <string> usin ...
 - Java实现Qt的SIGNAL-SLOT机制(保存到Map中,从而将它们关联起来,收到信号进行解析,最后反射调用)
			
SIGNAL-SLOT是Qt的一大特色,使用起来十分方便.在传统的AWT和Swing编程中,我们都是为要在 监听的对象上添加Listener监听器.被监听对象中保存有Listener的列表,当相关事件 ...
 - spark streaming 接收kafka消息之三 -- kafka broker 如何处理 fetch 请求
			
首先看一下 KafkaServer 这个类的声明: Represents the lifecycle of a single Kafka broker. Handles all functionali ...
 - 03、MySQL—数据表操作
			
1.创建数据表 基本语法:create table 表名(字段名 字段类型 [字段属性], 字段名 字段类型 [字段属性],…) [表选项] 范例:创建数据表 以上错误说明:表必须放到对应的数据库下: ...
 - sqlserver 表值函数与标量值函数
			
除了在我们常用的程序开发中要用到函数外,在sql语句中也常用到函数,不论哪种,思想都没有变,都是为了封装,可复用. 创建的方法和整体结构都大体相同,都少不了函数名,函数的形参,返回值等这些. 一.表值 ...
 - spring 5.x 系列第15篇 —— 整合dubbo (xml配置方式)
			
文章目录 一. 项目结构说明 二.项目依赖 三.公共模块(dubbo-common) 四. 服务提供者(dubbo-provider) 4.1 productService是服务的提供者( 商品数据用 ...
 - SqlServer导入大文件Sql
			
sqlcmd -S "192.168.1.218" -U "sa" -P "1qaz~xsw2" -d "SispMain&quo ...
 - MxNet 模型转Tensorflow pb模型
			
用mmdnn实现模型转换 参考链接:https://www.twblogs.net/a/5ca4cadbbd9eee5b1a0713af 安装mmdnn pip install mmdnn 准备好mx ...