zoukankan      html  css  js  c++  java
  • poj3176

    一、题意:给定一些数,成三角形排列。从上往下走,每个数只能往它相邻的两个数走,一直走到底端得到一条线路。这条线路上的数的和最大是多少

    二、思路:简单的动态规划。dp[i+1][j+1]:=以第i+1行j+1列为最后一个数字所能得到的最大和。所有的初始值均设为0,那么从上往下递推,可得到以每一个数为结尾的最大和,这样只要比较最后一行所能得到的最大和是多少即可。递推式为:dp[i+1][j+1]=max(dp[i][j],dp[i][j+1])+tri[i][j];

    三、代码:

    #include"iostream"
    #include"stdio.h"
    #include"string.h"
    using namespace std;
    const int MAXN=355;
    int dp[MAXN][MAXN];
    int tri[MAXN][MAXN];
    int GetMaxSum(int n)
    {
        memset(dp,0,sizeof(dp));
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<=i;j++)
            {
                dp[i+1][j+1]=max(dp[i][j+1],dp[i][j])+tri[i][j];
            }
        }
        int res=0;
        for(int j=0;j<n;j++)
        {
            if(dp[n][j+1]>res) res=dp[n][j+1];
        }
        return res;
    }
    
    int main()
    {
        int n;
        while(scanf("%d",&n)==1)
        {
            for(int i=0;i<n;i++)
                for(int j=0;j<=i;j++)
                    scanf("%d",&tri[i][j]);
            cout<<GetMaxSum(n)<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    demo_10_02 云数据库聚合_bucket_02 bucketAuto
    demo_10_02 云数据库聚合_bucket_01
    nginx 启动脚本
    grep 全局搜索打印命令
    ulimit shell启动进程所占用的资源命令
    nginx 一键安装
    安装 nginx
    学习笔记::杜教筛
    markdown测试
    bzoj4589
  • 原文地址:https://www.cnblogs.com/acm-jing/p/10311660.html
Copyright © 2011-2022 走看看