动态规划之一数塔

从倒数第二列开始查找

 

核心代码:

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; 
}

 

posted @ 2013-08-02 15:34  平林新袖  阅读(223)  评论(0编辑  收藏  举报