南阳18--The Triangle

The Triangle

时间限制:1000 ms  |  内存限制:65535 KB

难度:4

描述

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

//这个是经典的简单动态规划,典型的多段图。思路就是建立一个数组,由下向上动态规划,保存页子节点到当前节点的最大值: 
1 for(int i=num-2;i>=0;i--) //核心 简单的动規;
2 {
3     for(int j=0;j<=i;j++)
4   {
5         dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);
6      }
7 }
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,i,j,num[110][110];
 5     scanf("%d",&n);
 6     for(i=0;i<n;i++)
 7     for(j=0;j<=i;j++)
 8     scanf("%d",&num[i][j]);
 9     for(i=n-2;i>=0;i--)
10     for(j=0;j<=i;j++)
11     {
12         num[i][j]+=num[i+1][j]>num[i+1][j+1]?num[i+1][j]:num[i+1][j+1];
13     }
14     printf("%d\n",num[0][0]);
15     return 0;
16 }
时间: 2024-12-06 19:20:44

南阳18--The Triangle的相关文章

nyoj 18 The Triangle 动态规划

和nyoj613(免费馅饼)一样的原理  从下 网上依次遍历 存贮最大值 #include <stdio.h> #include <algorithm> using namespace std; int main() { int n,num[105][105]={0}; scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) scanf("%d",&n

关于prototype以及继承方面的理解

学习笔记(致 渐悟) 写在前面的话 今天看<javascript高级程序设计>的时候,看到有关继承和原型链prototype时遇到些疑问,特回来研究下,同时也感谢JS群网友"渐悟"的指导,非常感谢! 先给Demo,再说话 1 function Polygon(iSides) { 2 this.sides = iSides; 3 this.sex = "男"; 4 this.getName = function () { 5 console.log(&qu

ArrayEasyFinish

(1)Plus One 解题思路:模拟现实中做加法的方式,在个位加一,并考虑进位的情况.代码如下: 1 public class Solution { 2 public int[] plusOne(int[] digits) { 3 int carries = 1; 4 for (int i = digits.length - 1; i >= 0 && carries > 0; i--) { 5 int sum = digits[i] + carries; 6 digits[i

{key}面向对象程序设计-C++ polymorphism 【第十三次上课笔记】

Peronal Link: http://segmentfault.com/a/1190000002464822 这节课讲了本门课程 面向对象程序设计中最为重要的一个部分 - 多态 1 /************************************************************************* 2 > File Name: polymorphism.cpp 3 > Author: Jeremy Wu 4 > Created Time: Mon 25

图形碰撞检测 点与三角形

点与三角形的碰撞检测有很多方法,基本思想都是使用向量,利用向量之间的关系得出一些数据,然后利用这些数据进行判断.为了完成目的,我们先要建立基本的数据模型(代码使用的语言是ActionScrpit): 1. 向量类: 1 /** 2 * 向量类,默认使用正交基 3 */ 4 public class SHVector 5 { 6 public var x:Number; 7 public var y:Number; 8 public var z:Number; 9 10 /** 11 * 构造函数

数字三角形求解

题目: 如图所示,                3            2        3        4    3    4    4 7个数字构成三层的数字三角形,从属关系为树形关系.要求按照从属关系,在每一层选择一个数,使最后的和最大. 分析: 如果从下往下选择的话,越往下选择越多,问题就越复杂.考虑从下往上选择,采用动态规划法,从局部开始考虑.局部最大,则构成整体最大.我是用C++写的. 代码: 1 #include <iostream> 2 using namespace s

acdream.18.KIDx&#39;s Triangle(数学推导)

KIDx's Triangle Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statistic Next Problem Problem Description One day, KIDx solved a math problem for middle students in seconds! And than he created this problem. N

The Triangle

针对如下形式的ACM试题,大多出自南阳理工学院的在线ACM试题(网址: 南阳理工在线评测系统),在此非常感谢,同时也非常感谢作者的分享! 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 73 88 1 02 7 4 44 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 ro

【南阳OJ分类之语言入门】80题题目+AC代码汇总

声明: 题目部分皆为南阳OJ题目. 代码部分包含AC代码(可能不止一个)和最优代码,大部分都是本人写的,并且大部分为c代码和少部分c++代码and极少java代码,但基本都是c语言知识点,没有太多差别,可能代码有的写的比较丑,毕竟知识有限. 语言入门部分题基本都较为简单,是学习编程入门的很好练习,也是ACM的第一步,入门的最佳方法,望认真对待. 本文由csdn-jtahstu原创,转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:1373758426和csdn博客地址. now begi