每算出一个MaxSum(r,j)就保存起来,每个数算一次。
核心代码:
MaxSum(int i,intj)
{
if(maxsum[i][j]!=-1)
return maxsum[i][j];
if(i==n) maxsum[i][j]=D[i][j];
else
{
int x=MaxSum(i+1,j)
int y=MaxSum(i+1,j+i);
maxsum[i][j]=max(x,y)+D[i][j];
}
return maxsum[i][j];
}