【动态规划】The Triangle
问题 E: 【动态规划】The Triangle
时间限制: 1 Sec 内存限制: 128 MB
提交: 24 解决: 24
[提交][状态][讨论版]
题目描述
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
(Figure 1)
Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.
输入
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.
输出
Your program is to write to standard output. The highest sum is written as an integer.
样例输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样例输出
30
解题思路:首先从上往下是i到n-1,从左往右是j到i;
要从上往下加,先看最上面的7,可以加3等于10,可以加8等于15;
然后看第三行当j等于0,只能加到它右上方那个上,当j=i,只能加到左上方那个数上。
当j!=0或i的时候,可以加到左上方,可以加到右上方,但要求最后的和最大,所以要加到和大的那一个上面。
并且加到大的那一个上这一决策对之后的没有影响,无后效性。
状态转移方程为:sum[i][j]=max(sum[i-1][j],sum[i-1][j-1])+a[i][j];
从上到下,从左到右依次遍历,最后一行其中一个数上会有最大值。
便利最后一行sum[i],找出最大值。
#include <iostream>
#include <cstdio> using namespace std; int main()
{
int a[][];
int sum[][];
int n;
int maxx;
while(scanf("%d",&n)!=EOF){
for(int i=;i<n;i++){
for(int j=;j<i+;j++){
scanf("%d",&a[i][j]);
}
}
sum[][]=a[][];
for(int i=;i<n;i++){
for(int j=;j<i+;j++){
if(j==){
sum[i][j]=sum[i-][j]+a[i][j];
}
if(j==i){
sum[i][j]=sum[i-][i-]+a[i][j];
}
sum[i][j]=max(sum[i-][j],sum[i-][j-])+a[i][j];
}
}
maxx=;
for(int i=;i<n;i++){
if(maxx<sum[n-][i]){
maxx=sum[n-][i];
}
}
printf("%d\n",maxx);
}
return ;
}
【动态规划】The Triangle的更多相关文章
- LeetCode之“动态规划”:Triangle
题目链接 题目要求: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to ...
- LeetCode----Array
Remove Duplicates from Sorted Array 思路:两个指针,头指针在0,尾指针从1开始寻找,找到第一个不等于头指针值的数,覆盖掉头指针后面那个数,然后尾指针往后移. pub ...
- Algorithm Exercises
汇总一些常见的算法题目,参考代码. 注:部分题目没有合适的oj地址 枚举 Perfect Cubes.Biorhythms.Counterfeit Dollar.EXTENDED LIGHTS OUT ...
- POJ 1163 The Triangle(简单动态规划)
http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- Leetcode OJ : Triangle 动态规划 python solution
Total Accepted: 31557 Total Submissions: 116793 Given a triangle, find the minimum path sum from ...
- The Triangle (简单动态规划)
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number triangle. Write a program that calc ...
- POJ - 1163 The Triangle 【动态规划】
一.题目 The Triangle 二.分析 动态规划入门题. 状态转移方程$$DP[i][j] = A[i][j] + max(DP[i-1][j], DP[i][j])$$ 三.AC代码 1 #i ...
- LeetCode -- Triangle 路径求最小和( 动态规划问题)
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...
- Triangle(动态规划)
题目描述 Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjac ...
随机推荐
- Excel 计算 tips
1. 对一列数据想看看,distinct的结果 选中数据区域(包含列名),插入pivot table 2. 想检查一个单元格的值在不在某一列中,并返回标志值 =IF (COUNTIF(B:B,A1) ...
- fedora安装软件
jdk 1.下载rpm包 注意32位还是64位,注意是rpm格式 2.安装 sudo rpm -ivh jdk.rpm sudo update-alternatives --config java # ...
- BZOJ-1433 假期的宿舍 最大流+基础建图
网络流练习ing.. 1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1748 Solved: 765 [S ...
- 【bzoj1036】 ZJOI2008—树的统计Count
http://www.lydsy.com/JudgeOnline/problem.php?id=1036 (题目链接) 题意 动态维护树上两点间最大权值和权值和. Solution 裸树链剖分. 这一 ...
- Tomcat Can't load AMD 64-bit .dll on a IA 32
Java.lang.UnsatisfiedLinkError: C:\apache\apache-tomcat-7.0.14\bin\tcnative-1.dll: Can't load AMD 64 ...
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
建立了一个Javaweb工程,并在eclipse中配置了Web容器Tomcat.新建的jsp页面,添加一个简单的Java类.可是,JSP页面顶端出现“红色”的报错信息:The superclass & ...
- JAVA反射机制—学习总结
最近收到很多关于Java反射机制的问题留言,其实Java反射机制技术方面没有太多难点,或许是大家在学习过程中遗漏了细小知识点,导致一些问题无法彻底理解,现在我们简单的总结一下,加深印象.什么是反射机制 ...
- 使用easyUI 创建复杂的toolbar到datagrid
http://www.cnblogs.com/javaexam2/archive/2012/08/10/2632649.html @author YHC datagrid 的toolbar能包含的不仅 ...
- NetBeans快捷键的使用
.Ctrl-Tab:在打开的文件之间切换: .Ctrl-N:在当前打开的项目里新建文件: .Ctrl-F:当前文件查找匹配的字符(支持正则): .Ctrl-H:当前文件查找.替换匹配的字符(支持正则, ...
- yii增删改查
一.查询数据集合 1.$admin=Admin::model()->findAll($condition,$params);//该方法是根据一个条件查询一个集合,如: findAll( ...