我觉着递推不错。
1、能发现递推规律的人很厉害。
2、感觉好理解一些。
#include<iostream>
using namespace std;
/*
int MaxSum(int r,int j,int N,int D[100][100],int DMemory[100][100])
{
if(DMemory[r][j]!=-1)
{
return DMemory[r][j];
}
if(r==N)
{
DMemory[r][j]=D[r][j];
}
else
{
if(MaxSum(r+1,j,N,D,DMemory)>MaxSum(r+1,j+1,N,D,DMemory))
{
DMemory[r][j]=MaxSum(r+1,j,N,D,DMemory)+D[r][j];
}
else
{
DMemory[r][j]=MaxSum(r+1,j+1,N,D,DMemory)+D[r][j];
}
}
return DMemory[r][j];
}
*/
int main()
{
int D[100][100];
// int DMemory[100][100];
int MaxSum[100][100];
int N=0;
cin>>N;
int i=0,j=0;
for(i=0;i<N;i++)
{
for(j=0;j<=i;j++)
{
cin>>D[i][j];
//DMemory[i][j]=-1;
MaxSum[i][j]=0;
}
}
//改成递推
for(i=N-2;i>=0;i--)
{
for(j=0;j<=i;j++)
{
if((D[i][j]+D[i+1][j])>(D[i][j]+D[i+1][j+1]))
{
D[i][j]=D[i][j]+D[i+1][j];
}
else
{
D[i][j]=D[i][j]+D[i+1][j+1];
}
}
}
cout<<D[0][0]<<endl;
return 0;
}