zoukankan      html  css  js  c++  java
  • poj 3176 三角数和最大问题 dp算法

    题意:给一个三角形形状的数字,从上到下,要求数字和最大

    思路 :dp

    1. dp[i+1][j]=max(dp[i+1][j],dp[i][j]+score[i+1][j])
    2. dp[i+1][j+1]=max(dp[i+1][j],dp[i][j]+score[i+1][j+1]
    3. 在最后一行进行比较,找到最大值输出

    对上面思路的解释:

    对于每个位置都是由上面一个位置加当前位置的最大值组成,所以有了上面的递推公式

    解决问题的代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int maxn = 351;
    int dp[maxn][maxn], score[maxn][maxn];
    int main()
    {
            int n;
            scanf("%d", &n);
            for (int i = 1; i <= n; i++)
                   for (int j = 1; j <= i; j++)
                           scanf("%d", &score[i][j]);
       
            dp[1][1] = score[1][1];
            for(int i=1;i<=n;i++)
                   for (int j = 1; j <= i; j++)
                   {
                           dp[i + 1][j] = max(dp[i + 1][j], dp[i][j] + score[i + 1][j]);
                           dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + score[i + 1][j + 1]);
                   }
            int tmp = dp[n][1];
            for (int i = 2; i <= n; i++)
            {
                   if (tmp < dp[n][i]) tmp = dp[n][i];
            }
            printf("%d
    ", tmp);
            return 0;
    }
    君子知命不惧,自当日日自新
  • 相关阅读:
    PHP学习——数组处理函数(一)
    PHP与MySQL的连接
    c语言:<tchar.h>
    PHP数组(二)
    PHP数组(一)
    PHP基础知识(三)
    Git和GitHub
    PHP基础知识(二)
    js 全选和反选(复选框)
    python 字典之删除
  • 原文地址:https://www.cnblogs.com/xuxiaojin/p/9406632.html
Copyright © 2011-2022 走看看