poj 1163 The Triangle

来源:互联网 发布:网络开设赌场判刑案例 编辑:程序博客网 时间:2024/05/17 23:31

分类:dp 难度:1

 

题意:给出一个数字三角形,行数n,求由顶到底数值和最大的路。

基础dp,dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])。注意MAX宏的使用,可能使运算式结果和预期不同,慎用。

#include<cstdio>#include<cstring>#define MAX(x,y) (x)>(y)?(x):(y) const int N=110;int n,tr[N][N],dp[N][N];int main(){while(~scanf("%d",&n)){memset(tr,0,sizeof(tr));memset(dp,0,sizeof(dp));int i,j;for(i=1;i<=n;i++)for(j=1;j<=i;j++)scanf("%d",&tr[i][j]);for(i=n;i>0;i--)for(j=1;j<=i;j++){dp[i][j] = tr[i][j];dp[i][j] += MAX(dp[(i+1)][j],dp[(i+1)][j+1]);}printf("%d\n",dp[1][1]);}}