数字三角形:有一个由非负整数组成的三角形,第一行只有一个数,除了最后一行之外,每个数的左下方和右下方各有一个数,如下图所示:
给每个格子编号:(为了方便表示)
第一行第一个(1,1)
第二行第一个(2,1),第二行第二个为(2,2)
第三行第一个(3,1),第三行第二个为(3,2),第三行第三个(3,3)
第i行第j个(i,j)
即该数字三角形可用二维数组表示a[i][j];i表示行,j表示列。
把当前的位置(i,j)看成一个状态,定义状态的指标函数d(i,j)
状态转移:
从(i,j)出发有两种选择,
左下(i+1,j)
右下(i+1,j+1)
=> max{d(i+1,j),d(i+1,j+1)}
递归:
int solve(int i,int j)
{
return a[i][j]+(i==