动态规划之一数塔
从倒数第二列开始查找
核心代码:
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; }