题目:平安果

题目介绍:给出一个m*n的格子,每个格子里有一定数量的平安果,现在要求从左上角顶点(1,1)出发,每次走一格并拿走那一格的所有平安果,且只能向下或向右前进,最终到达右下角顶点(m,n),要求求出能拿走的平安果的最大数值。

输入:第一行有两个数值m,n,然后是m行n列数值。

输出:一个数值代表平安果的最大数量。

例:

输入:

4 4

1 2 4 8

10 14 3 9

17 6 7 20

12 5 21 23

输出:

89

分析:这是一种比较典型的dp算法(动态规划)的题目,每一格获取的平安果最大数值都与上格或左格有关(即交叠问题),且无后效性。这题也证明了动态规划可以解决贪心算法所解决不了的问题,若用贪心算法,不一定能得出总体最优解。

状态方程:dp[ i ][ j ]=max{ dp[ i-1 ][ j ] , dp[ i ][ j-1 ]}+A[ i ][ j ]

代码如下:

 1 #include <vector>
 2 #include <iostream>
 3 using namespace std;
 4 int main()
 5 {
 6     int m, n;
 7     int i, j;
 8     while (cin >> m >> n)
 9     {
10         vector<vector<int>> ivec(m, vector<int>(n));
11         for (i = 0; i < m; ++i)
12         {
13             for (j = 0; j < n; ++j)
14             {
15                 cin >> ivec[i][j];
16             }
17         }
18         vector<vector<int>> dp(ivec);
19         for (i = 1; i < m; ++i)
20         {
21             dp[i][0] += dp[i - 1][0];
22         }
23         for (j = 1; j < n; ++j)
24         {
25             dp[0][j] += dp[0][j - 1];
26         }
27         for (i = 1; i < m; ++i)
28         {
29             for (j = 1; j < n; ++j)
30             {
31                 dp[i][j] += (dp[i - 1][j] < dp[i][j - 1]) ? dp[i][j - 1] : dp[i - 1][j];
32             }
33         }
34         cout << dp[m - 1][n - 1] << endl;
35     }
36     return 0;
37 }

结果如下图所示:

转载于:https://www.cnblogs.com/ljy1227476113/p/9563101.html

华为笔试——C++平安果dp算法相关推荐

  1. 华为笔试——字符串排序、去重、反转等算法(C语言版)

    最近刷题记录太多,字符串又是华为笔试非常爱考的知识点,设计字符串的读入.存取.字符的判断.比较.去重.排序等操作.根据华为近几年笔试中出现的题目,依次剖析每道题目的思想和算法实现. 注:题目的编号对应 ...

  2. 旅行商问题(华为笔试蜜蜂采蜜问题)

    旅行商问题是算法中比较难的一类题目,也是比较综合的题目之一,其变种的题目也非常灵活,应用场景非常广泛,前段时间在做华为笔试题目的时候,遇到了一个与旅行商问题相关的蜜蜂飞行采花粉问题: 题目大意是:一个 ...

  3. 【转载】旅行商问题(华为笔试蜜蜂采蜜问题)

    本文转载链接: https://blog.csdn.net/qq_29592167/article/details/90243408 感谢来自Raintin_coder的分享 旅行商问题是算法中比较难 ...

  4. 华为 社招 C语言笔试,华为笔试C语言笔试题之3

    <华为笔试C语言笔试题之3>由会员分享,可在线阅读,更多相关<华为笔试C语言笔试题之3(10页珍藏版)>请在人人文库网上搜索. 1.C 语言笔试题之34. static 有什么 ...

  5. 2020.9.9华为笔试记忆:KMP+记忆化搜索+字典树

    2020.9.9华为笔试 当然,出现在我博客中的笔试都不是我自己的笔试(人家也不给我发笔试链接,小声bibi,诶,好像我也没投,hhhahahha 记者:为什么要做笔试? 我:生活无聊了喏,肯定要做啊 ...

  6. 2019华为笔试 找终点

    [算法][华为]2019华为笔试 找终点:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数, https://blog.csdn.net/qinglingLS ...

  7. 华为笔试2021-08-18

    华为笔试2021.8.18 华为笔试2021.8.18 1. 取零食 输入 输出 示例 代码 2. 夜宵发放 输入 输出 示例1 示例2 代码 3. 连连看 输入 输出 示例 代码 华为笔试2021. ...

  8. 20200422华为笔试

    20200422华为笔试 第一题 题目描述 输入描述 输出描述: 输入 输出 思路 代码 第二题 题目描述 输入描述 输出描述: 输入 输出 说明 思路 代码(Python3) 第三题 题目描述 输入 ...

  9. boost::geometry模块多边形DP算法简化示例

    boost::geometry模块多边形DP算法简化示例 实现功能 C++实现代码 实现功能 boost::geometry模块多边形DP算法简化示例 C++实现代码 #include <boo ...

  10. dp笔记:关于DP算法和滚动数组优化的思考

    从网上总结了一些dp的套路以及对滚动数组的一些思考,现记录如下,希望以后回顾此类算法时会有所帮助. 目录 1.DP算法经验 1.DP算法核心: 2.DP算法类别以及例题 例1:三步问题 例2:最小路径 ...

最新文章

  1. C#设计模式——适配器模式(Adapter Pattern)
  2. mac php 超时,PHP---Mac上开启php错误提示
  3. 初学C遇到的一些知识点汇总
  4. python批量分析表格_Python统计分析execl文件列表值的方法
  5. 服务器的虚拟路径是什么,设置服务器的虚拟路径
  6. linux下创建用户,给用户设置密码,给用户授权
  7. oracle创建用户和角色、管理授权以及表空间操作
  8. UNITY自带的3D object没有三角形?
  9. 如何卸载office201032位_office2010卸载不了应该如何通过清理注册表解决方法?
  10. 2020年生肖码表图_2020年十二生肖号码表 查询属相年龄岁数对照图表
  11. windows下强制删除文件
  12. java实现短视频拍摄_短视频 SDK 6大功能技术实现方式详解
  13. 北航新版选课系统科学选课教程
  14. 机器学习预测股票收益(一)之随机森林模型
  15. 配置大华网络摄像机,并远程存储到FTP服务器
  16. 接入Google fit指南
  17. 2.某服装店进行促销活动,一件上衣原价90元,裤子原价45元,现一套120元。 如果我买m套上衣和n套裤子,最少花费多少钱?
  18. 目标检测20年(Object Detection in 20 Years)
  19. Internet Download Manager2023下载器Win系统经典下载工具
  20. linux maven私服nexus搭建

热门文章

  1. 不踩雷不将就 京东智能产品30天无忧退
  2. MYSQL LEFT JOIN 的怪异行为
  3. 热敏打印计算机,热敏打印头工作原理是什么 热敏打印头原理介绍【详解】
  4. Android shape半圆,1/4圆
  5. 动态更换 Shape 的颜色
  6. 解决许可证的相关问题
  7. android barchart设置标题,android - 如何设置MPAndroidChart BarChart的高度和宽度? - 堆栈内存溢出...
  8. IPV6IPV4网址
  9. MAC下串口助手合集
  10. hihocoder 网易游戏2016实习生招聘在线笔试 解题报告