POJ3176-Cow Bowling

来源:互联网 发布:联通网络机顶盒破解 编辑:程序博客网 时间:2024/05/21 19:42

这么多天对DP还是研究的不够透彻,DP入门第一题。

初始条件为dp[0][0]=tip的值,其余dp[i][j]取决于dp[i-1][j]和dp[i-1][j-1]和本身dp[i][j]的值。

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 350;int bowl[MAXN+5][MAXN+5];int dp[MAXN+5][MAXN+5];int main(){    int n;    scanf("%d", &n);        memset(bowl, -1, sizeof(dp));        for (int i = 0; i < n; i++) {        for (int j = 0; j <= i; j++) {            scanf("%d", &bowl[i][j]);        }    }        dp[0][0] = bowl[0][0];    for (int i = 1; i < n; i++) {        for (int j = 0; j <= i; j++) {            if (j - 1 < 0) {                dp[i][j] = max(dp[i-1][j]+bowl[i][j], dp[i][j]);            }            else                dp[i][j] = max(max(dp[i-1][j], dp[i-1][j-1])+bowl[i][j], dp[i][j]);        }    }        int ans = 0;    for (int i = 0; i < n; i++) {        ans = max(ans, dp[n-1][i]);    }        printf("%d\n", ans);        return 0;}


0 0
原创粉丝点击