题目

题目描述

现在有一个数字三角形,第一行有一个数字,第二行有两个数字,以此类推...,现在从第一行开始累加,每次在一个节点累加完之后,下一个节点必须是它的左下方的那个节点或者是右下方那个节点,一直累加到最后一层。问最大的累加和是多少?

在输入的时候因为格式的问题,所以我们会形成一个直角三角形。那么每个节点的下一个节点只能是它的正下方或者是右下方的那个节点。每个节点的值最大为100。

输入格式

第一行是输入这个三角形总共有多少行R(1<=R<=1000),下面输入这个数字三角形。

输出格式

直接输出最大的累加和。

输入样例

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

输出样例

30

解题思路

很经典也很简单的动态规划思想,从最底层开始往上走,每个节点要么是从它的正下方到达,或者是从右下方那个节点到达的。那么我们就在两者之间取最大值即可。

解题代码

/*
ID: yinzong2
PROG: numtri
LANG: C++11
*/
#define MARK
#include <iostream>
#include <algorithm>
using namespace std; int n;
int nums[1010][1010], dp[1010][1010]; int main() {
#ifdef MARK
freopen("numtri.in", "r", stdin);
freopen("numtri.out", "w", stdout);
#endif // MARK
while (cin >> n) {
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
cin >> nums[i][j];
dp[i][j] = 0;
}
}
// 初始化
for (int i = 1; i <= n; ++i) {
dp[n][i] = nums[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], dp[i+1][j+1]) + nums[i][j];
}
}
cout << dp[1][1] << endl;
}
return 0;
}

USACO Section 1.5 Number Triangles 解题报告的更多相关文章

  1. USACO Section1.5 Number Triangles 解题报告

    numtri解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  2. USACO Section 1.3 Prime Cryptarithm 解题报告

    题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...

  3. USACO Section 1.4 Arithmetic Progressions 解题报告

    题目 题目描述 现在给你一个数集,里面的数字都是由p^2+q^2这种形式构成的0 <= p,q <= M,我现在需要你在其中找出一个长为N的等差数列,数列中的第一个数字为a,公差为b,当你 ...

  4. USACO Section 1.3 Combination Lock 解题报告

    题目 题目描述 农夫John的牛从农场逃脱出去了,所以他决定用一个密码锁来把农场的门锁起来,这个密码锁有三个表盘,每个表盘都是环形的,而且上面刻有1~N,现在John设了一个开锁密码,而且这个锁的设计 ...

  5. USACO Section 1.3 Barn Repair 解题报告

    题目 题目描述 某农夫有一个养牛场,所有的牛圈都相邻的排成一排(共有S个牛圈),每个牛圈里面最多只圈养一头牛.有一天狂风卷积着乌云,电闪雷鸣,把牛圈的门给刮走了.幸运的是,有些牛因为放假,所以没在自己 ...

  6. USACO Section 1.3 Mixing Milk 解题报告

    题目 题目描述 Merry Milk Makers 公司的业务是销售牛奶.它从农夫那里收购N单位的牛奶,然后销售出去.现在有M个农夫,每个农夫都存有一定量的牛奶,而且每个农夫都会有自己的定价.假设所有 ...

  7. USACO Section 1.2 Dual Palindromes 解题报告

    题目 题目描述 有一些数(如 21),在十进制时不是回文数,但在其它进制(如二进制时为 10101)时就是回文数. 编一个程序,从文件读入两个十进制数N.S.然后找出前 N 个满足大于 S 且在两种以 ...

  8. USACO Section 1.2 Palindromic Squares 解题报告

    题目 题目描述 输入一个基数B,现在要从1到300之间找出一些符合要求的数字N.如果N的平方转换成B进制数之后是一个回文串,那么N就符合要求.我们将N转换成B进制数输出,然后再将N的平方转换成B进制数 ...

  9. USACO Section 1.2 Milking Cows 解题报告

    题目 题目描述 有3个农夫每天早上五点钟便起床去挤牛奶,现在第一个农夫挤牛奶的时刻为300(五点钟之后的第300个分钟开始),1000的时候结束.第二个农夫从700开始,1200结束.最后一个农夫从1 ...

随机推荐

  1. 阿里路由框架ARouter的使用步骤

    ARouter的使用步骤(以宿主APP modulebase和moduleuser 三大模块组成的工程为例) 第一步 因为路由跳转是子模块都需要用到的,所以我们在module_base模块中引入 co ...

  2. git push失败

    不知道弄错了什么上传项目到github上失败 git commit的时候提示 On branch masternothing to commit, working tree clean git pus ...

  3. CSS3实现垂直居中的新方法

    测试地址: http://codepen.io/anon/pen/PZKZqe 兼容性:

  4. 火狐插件安装-基于web自动化测试

    一.Firebug 安装 1.  打开火狐浏览器—选择右上角“打开菜单”(图一)----附件组件(图二) 图一 图二 2.  点击:扩展(图三)—-------用于所有附加组件的工具(图四)----选 ...

  5. [文章存档]如何检测 Azure Web 应用沙盒环境文件系统存储量

    链接:https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-h ...

  6. ubuntu下import matplotlib错误解决办法

    环境:ubuntu16.04,python2.7,tensorflow1.4.0 问题: ImportError: No moudule named _tkinter, please install ...

  7. Mysql Order By注入总结

    何为order by 注入 本文讨论的内容指可控制的位置在order by子句后,如下order参数可控"select * from goods order by $_GET['order' ...

  8. python之爬虫_模块

    目录 一.requests模块二.Beautifulsoup模块 一.requests模块 1.介绍 Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但 ...

  9. “学霸系统”之NABC

    我们团队这次选择的是“学霸系统”客户端项目: 1.需求(need) 作为一款和网上教学问答系统具有相似功能的手机客户端,具体的功能已给出要求:用户管理.搜索.分类.上传下载.用户贡献与交互等功能. ( ...

  10. 实验三:敏捷开发与XP实践

    Java实验三报告 一.   实验内容 (一)敏捷开发与XP 内容:1.敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 2.极限编程(eXtreme Pro ...