数学三角形问题
Updated:
Contents
//数学三角形问题,有一个由非负整数组成的三角形,第一行只有一个数,除了最下行
之外每个数的左下方和右下方各有一个数
1
/ \
3 2
/ \ / \
4 10 1
/ \ / \ / \
4 3 2 20
从第一行的数开始,每次可以往左下或右下走一格,知道走到最下行,把沿途经过的数
全部加起来,如何走才使得这个和尽量大?
定义状态:
d[i][j]为从格子(i,j)出发时能得到的最大和(包括(i,j)本身)。在这个状态
定义下原问题的解是d[1][1]
1,1
/ \
2,1 2,2
/ \ / \
3,1 3,2 3,4
/ \ / \ / \
4,1 4,2 4,3 4,4
第一层1个,第二层2个,第三层3个…..
状态转移方程:
d[i][j] = a[i][j] + max(d[i+1][j], d[i+1][j+1])
1 |
|