zoukankan      html  css  js  c++  java
  • 【C/C++】金币

    做了一下去年的题目,今年看起来就没这么难了
    从上到下的可以从下到上考虑,会简单很多,dp入门

    题目 金币
    小招在玩一款游戏,在一个N层高的金字塔上,以金字塔顶为第一层,第i层有i个落点,每个落点有若干金币,在落点可以往向下或右斜向下移动,问能获得的最大金币值。
    其实也没啥好说的,就是动态规划数塔问题,从第N层塔往上走比较好算。
    样例输入
    5
    8
    3 8
    8 1 0
    4 7 5 4
    3 5 2 6 5
    输出
    31

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 1010;
    int dp[maxn][maxn];
    int data[maxn][maxn];
    
    int main()
    {
        memset(data, 0, sizeof(data));
        memset(dp, 0, sizeof(data));
        int n;
        scanf("%d", &n);
        for (int i = 1; i <= n; i++ )
        {
            for (int j = 1; j <= i; j++)
            {
                scanf("%d", &data[i][j]);
            }
        }
    
        // 边界
        for (int i = n; i>=1; i--)
        {
            for (int j = 1; j <= i; j++)
            {
                dp[i][j] = data[i][j] + max(dp[i+1][j], dp[i+1][j+1]);
            }
        }
        cout << dp[1][1] << endl;
    
        system("pause");
    }
    
  • 相关阅读:
    c# 面相对象4-多态性
    c# 面相对象3-之继承性
    c# 面相对象2-之封装性
    面向对象和面向过程的区别
    <title>下拉菜单</title>
    15-07-31 javascript--事件
    DOM操作
    格式与布局
    c# 函数相关练习
    c# 哈希表集合;函数
  • 原文地址:https://www.cnblogs.com/kinologic/p/14718474.html
Copyright © 2011-2022 走看看