题目    淘金

题目描述 在一片n*m的土地上,每一块1*1的区域里都有一定数量的金子。这一天,你到这里来淘金,然而当地人告诉你,如果你要挖(x, y)区域的金子,就不能挖(x-1,y),(x+1, y)以及横坐标为y-1和y+1的金子(也就是说你挖了某一区域的金子,上一行,下一行,左边,右边的金子你都不能被允许挖了)。那么问题来了:你最多能淘金多少? 数据输入 对于每组数据,第一行两个数n,m,表示土地的长和宽(1<=n,m<=200) 接下来n行,每行m个数,表示每个区域的金子数量,每个区域的金子数量不超过1000 结果输出 对于每组数据,输出最多得到的金子数量。

a[i]记录某一行第i块金子的数目。

思路:这个题可以采取动态规划的思想。挖了某一块的金子就无法挖这块金子上一行,下一行,左边与右边的金子。

那么可以考虑一个简化的淘金,假设只有一行,那么如果你挖了a[i],你就没有办法挖a[i-1]与a[i+1]。假设,d[i]代表截止挖到这一行第i块金子,我已经得到的最大金子数量,那么d[总共列数]就是这一行最大能挖到的金子数量。d[i] =max{d[i-2]+d[i-3]}+a[i];

最后,每一行能够得到的最大金子数都为d[最大列数]。然后,我们对d[i][最大列数]进行列举递推方程式。

k[i][最大列数]代表截止到第i行为止,能获得的最大的金子数

k[i][最大列数]=max{k[i-2][最大列数],k[i-3][最大列数]}+d[i];

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 200 + 10;
int a[maxn][maxn];  // 区域金子量
int b[maxn];    // 考虑某一行,b[i]表示[0, i]这个区域中并且选择了i个金子能得到最大值// b[i] = max(b[i-2], b[i-3])+a[i]
int c[maxn];    // c[i]表示第i行能得到的最多金子数量
int d[maxn];    // d[i]表示考虑[0,i]行,选择了第i行能得到最多金子
int main(){int n, m;while(scanf("%d%d", &n, &m)==2) {for(int i=0; i<n; i++) {for(int j=0; j<m; j++) scanf("%d", &a[i][j]);}for(int i=0; i<n; i++) {for(int j=0; j<m; j++) {b[j] = max(j-2>=0?b[j-2]:0, j-3>=0?b[j-3]:0) + a[i][j];}c[i] = max(b[m-1], m-2>=0?b[m-2]:0);        // 第i行能得到的最多金子数量 d[i] = max(i-2>=0?d[i-2]:0, i-3>=0?d[i-3]:0) + c[i];}printf("%d\n",  max(d[n-1], n-2>=0?d[n-2]:0));}return 0;
}

小小算法题(CCF)相关推荐

  1. 一看“左程云:200道算法与数据结构”,二刷“阿里云:70+算法题、30种大厂笔试高频知识点”,3月过去终于挺进我梦中的字节!

    不管是学生还是已经工作的人,我想彼此都有一个相同的梦想:进大厂! 眼看着2020年还有个三十来天就要完美收尾了,那么如何才能在未来三个月弯道超车赶上"金三银四的春招",进入梦寐以求 ...

  2. 题海精华——算法题精选

    前言 做了一周的算法题,在原有的算法基础上进行一些深化的题目.主要是将一些做过比较好的题的思路,并且一边做,一边也修改了一些之前发的文档优化解题方式. 类似于错题重错,一错再错,死不悔改,至死方休的记 ...

  3. Re: 求助:5道算法题

    http://www.newsmth.net/frames.html 发信人: cutepig (cutepig), 信区: Algorithm 标  题: 求助:5道算法题 发信站: 水木社区 (S ...

  4. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...

  5. 算法总结---最常用的五大算法(算法题思路)

    算法总结---最常用的五大算法(算法题思路) 一.总结 一句话总结: [明确所求:dijkstra是求点到点的距离,辅助数组就是源点到目标点的数组] [最简实例分析:比如思考dijkstra:假设先只 ...

  6. BAT七年经验,却抵不过外企面试的两道算法题?

    整理| 琥珀 出品| AI科技大本营 又遇年底跳槽季,如果你曾在 BAT 等互联网大厂有过较为丰富的工作经验,想要换份工作,面试时会主要考虑哪些因素? 面试外企,却被两道算法题难住? 近日,一位网友在 ...

  7. 字节跳动面试官:你离50w年薪就差答对了这个算法题!

    我有个朋友,最近去头条面试,因为算法题没写出来,直接面挂了,搞得他非常郁闷. 众所周知,算法对程序员来说越来越重要了,但是总有人抱有一丝侥幸,不肯投入精力去学习,想着现在的工作中反正也用不到,等找工作 ...

  8. 一道看完答案你会觉得很沙雕的「动态规划算法题」

    这道算法题其实并不难,如果你把文章从头到尾看完的话基本上能看懂,但如果你看到最后的话大概率会说一句:这是什么沙雕题目?! 题目来源于 LeetCode 第 877 号问题:石子游戏. 为了更好理解,我 ...

  9. 经典算法题之Maximal Square

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:叶    虎 Maximal Square是道非常有意思的算 ...

最新文章

  1. 【黑客浅析】像黑客一样思考
  2. win7怎么启动对远程服务器的登陆,深度Win7旗舰版如何开启telnet服务使用远程登录...
  3. opencv 图像上画出目标运动的轨迹_基于opencv的单目和双目标定平台手眼标定
  4. 深蓝学院《从零开始手写VIO》作业三
  5. python读写文件实例_python读写文件的简单示例
  6. Linux 文本格式显示折线图,linux 折线图
  7. 获取不到html页面上的元素,Vue v-for渲染页面,获取不到DOM元素解析
  8. PHP 中的类, 对象之间的关系
  9. hao123.com 360浏览器等主页被劫持的解决方法
  10. empty怎么发音_empty怎么读
  11. 十二星座匹配对象_快来看看,准爆了的十二星座恋情分析表
  12. 网站的服务器什么意思,网站服务器站点是什么意思
  13. 如何调用WxJump的API接口实现微信网址链接转二维码
  14. BMZCTF WEB WEB_penetration
  15. 直播带货如何选品;抖音直播带货选品7大要素;丨国仁网络资讯
  16. 用Matlab求拐点和凹凸区间需要使用MATLAB
  17. markdown与Typora
  18. linux系统编程(九) 信号
  19. 建设无人飞机空中走廊
  20. Delphi XE4,C++ Builder XE4,RAD Studio XE4 v18.0.4905.60485(With Update 1) 官方下载激活

热门文章

  1. 消息中间件核心实体(1)
  2. 2.Cannot find config.m4.
  3. 查看系统表存储过程名称
  4. 一名英格兰球迷眼里的本届英格兰队
  5. 【转】DATAGRIDVIEW控制
  6. 我们应该搞清楚分支预测
  7. 分享一个非常 nice 的工具
  8. 分号是不是c语言的一部分,问什么C程序里总是提示缺少分号;,而明明有分号?...
  9. mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试
  10. 手写Java线程池_超详细解说_绝对能运行_代码超详细注释