zoukankan      html  css  js  c++  java
  • POJ 3176 Cow Bowling(dp)

    POJ 3176 Cow Bowling

       题目简化即为从一个三角形数列的顶端沿对角线走到底端,所取得的和最大值

           7
    
    *
    3 8
    *
    8 1 0
    *
    2 7 4 4
    *
    4 5 2 6 5

    该走法即为最大值

    分析:简单的动态规划,从上往下一层一层的考虑,对于每一行的最左边和最右边只有一种走法,只需要简单的相加,
       对于中间的数要考虑是加上左上角的数还是加右上角的数,加上两者中的较大者

    代码:
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int MAX_N = 350;
    int dp[MAX_N+1][MAX_N+1];
    int n;
    int main() {
        scanf("%d", &n);
        memset(dp, 0, sizeof(dp));
        
        for(int i = 1; i <= n; i++) {
            for(int j = 0; j < i; j++) {
                scanf("%d", &dp[i][j]);        
                if(j == 0) dp[i][j] += dp[i-1][j];
                else if(j == i - 1) dp[i][j] += dp[i-1][j-1];
                else dp[i][j] += max(dp[i-1][j],dp[i-1][j-1]); 
            }
        }
        int ans = 0;
        for(int i = 0; i < n; i++) ans = max(dp[n][i], ans);    
        printf("%d
    ", ans);
        return 0;
    }
    作者:kindleheart
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Spring:dispatchservlet
    信息系统设计
    数据流图的绘制方法
    信息系统管理工程师学习笔记
    JS语法学习笔记
    jQuery
    用Excel生成Sql
    JAVA-Reflect
    Java创建对象的过程
    有关死锁那点事儿
  • 原文地址:https://www.cnblogs.com/kindleheart/p/8593664.html
Copyright © 2011-2022 走看看