动态规划之一数塔

从倒数第二列开始查找

核心代码:

a[i][j]+=max(a[i+1][j],a[i+1][j+1]);

a[i][j] 加上他下面的两个数中的最大者……

到最后a[0][0]就是最终的最大值。

#include <iostream> 
#include<algorithm>
#define maxn 100 
using namespace std; 
int main() 
{ 
int a[maxn+1][maxn+1],i,j,n; 
cin >>n; 
for (i=1;i<=n;i++)
   for (j=1;j<=i;j++) 
    cin >>a[i][j]; 
for (i=n-1;i>=1;i--)
   for (j=1;j<=i;j++) 
    a[i][j]+=max(a[i+1][j],a[i+1][j+1]); 
cout <<a[1][1]<<endl; 
return 0; 
}
原文地址:https://www.cnblogs.com/plxx/p/3232717.html