POJ3176 DP水题

来源:互联网 发布:网络最牛的对联 编辑:程序博客网 时间:2024/06/02 12:04

题意:

三角形从上到下求最大值,只能向下或向右下

要点:

好简单的DP题,看了一下白书DP的介绍,3分钟就过了,DP白书上有很详细的解释,可以好好看看

代码如下:

#include<stdio.h>#include<string.h>int max(int a, int b){return a > b ? a : b;}int main(){int n,i,j;int dp[355][355], a[355][355];while (scanf("%d", &n) != EOF){memset(dp, 0, sizeof(dp));for (i = 1; i <= n; i++)for (j = 1; j <= i; j++)scanf("%d", &a[i][j]);for (i = 1; i <= n; i++)dp[n][i] = a[n][i];//从底下开始for (i = n - 1; i >= 1; i--)//i因为是逆序枚举的,所以i+1都已经求出来了for (j = 1; j <= i; j++){dp[i][j] = a[i][j] + max(dp[i + 1][j], dp[i + 1][j + 1]);}printf("%d\n", dp[1][1]);}return 0;}


0 0