题意:从下到上求最大的和。
思路:最简单的动态规划:方程为d[i][j]=max(d[i+1][j],d[i+1][j+1]);
代码:
#include <iostream>
using namespace std;
int main()
{
long a[101][101];
long N;
long i,j;
cin>>N;
for(i=1;i<=N;i++)
for(j=1;j<=i;j++)
cin>>a[i][j];
for(i=N;i>0;i--)
{
for(j=i;j>0;j--)
{
if(a[i][j]>a[i][j-1])
a[i-1][j-1]+=a[i][j];
else
a[i-1][j-1]+=a[i][j-1];
}
}
cout<<a[1][1]<<endl;
return 0;
}