动态规划(DP)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划(DP)相关的知识,希望对你有一定的参考价值。
在学习动态规划前 , 先补充些有关递归的知识 。
所谓的递归函数 就是调用自身函数的过程 ,因此是用栈来存储的 。
递归函数的最终返回值 就是第一次调用函数的返回值 。
在写函数递归时 , 要特别注意的两点 :
一是 递归 递归 , 一定有让它有能让他回归的条件 。
二是 写递归时 , 要找到一个最简单的关系式 , 方便写递归函数 。
话不多说 , 进入正题 , 先看这道题 。( poj 1163 )
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
(Figure 1)
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)的主要内容,如果未能解决你的问题,请参考以下文章
动态规划算法(Dynamic Programming,简称 DP)
动态规划_计数类dp_数位统计dp_状态压缩dp_树形dp_记忆化搜索