在数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。
路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,数字为 0 - 99
输入格式:
5 //表示三角形的行数 接下来输入三角形
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
要求输出最大和
//maxsum表示从该节点到下面的最大和 int angle(int i,int j){ if(maxsum[i][j]!=-1){ return maxsum[i][j]; } if(i==n){ //到底了,没有下面了 maxsum[i][j]==D[i][j]; }else{ int x=angle(i,j+1); int y=angle(i+1,j+1); maxsum[i][j]=max(x,y)+D[i][j];//这一点的最大和为下面两个路径的最大值加其本身 } return maxsum[i][j]; }