码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划(DP)

时间:2017-08-09 19:57:23      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:i+1   show   input   数组   number   动态   end   step   span   

 

在学习动态规划前 , 先补充些有关递归的知识 。

  

  所谓的递归函数 就是调用自身函数的过程 ,因此是用栈来存储的 。

  递归函数的最终返回值 就是第一次调用函数的返回值 。

  在写函数递归时 , 要特别注意的两点 :

       一是  递归 递归 , 一定有让它有能让他回归的条件 。

    二是  写递归时 , 要找到一个最简单的关系式 , 方便写递归函数 。

 

话不多说 , 进入正题 , 先看这道题 。( poj 1163 ) 

 

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.

Input

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.

Output

Your program is to write to standard output. The highest sum is written as an integer.

Sample Input

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

Sample Output

30


题目的意思是 : 从上到下 ,每次可以走左下角 或者右下角 , 问最大和是多少 。

  我们可以用一个二维数组去存放此三角形 。
   用 pre[i][j] 表示 第 i 行 第 j 个数 ,每次移动可以有两种选择 , 选择向左下走 , 即 pre[i+1][j] , 或者选择向 右下走 , 即 pre[i+1][j+1] , 若走到最后一行时 ,则返回 pre[i][j] , 不在调用 。



动态规划(DP)

标签:i+1   show   input   数组   number   动态   end   step   span   

原文地址:http://www.cnblogs.com/ccut-ry/p/7327226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!