每日算法打卡:摘花生 day 14

这篇具有很好参考价值的文章主要介绍了每日算法打卡:摘花生 day 14。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原题链接

1015. 摘花生

题目难度:简单

题目来源:《信息学奥赛一本通》

题目描述

Hello Kitty想摘点花生送给她喜欢的米老鼠。

她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。

地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。

Hello Kitty只能向东或向南走,不能向西或向北走。

问Hello Kitty最多能够摘到多少颗花生。

每日算法打卡:摘花生 day 14,算法进阶,算法,蓝桥杯,动态规划

输入格式

第一行是一个整数T,代表一共有多少组数据。

接下来是T组数据。

每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。

每组数据的接下来R行数据,从北向南依次描述每行花生苗的情况。每行数据有C个整数,按从西向东的顺序描述了该行每株花生苗上的花生数目M。

输出格式

对每组输入数据,输出一行,内容为Hello Kitty能摘到得最多的花生颗数。

数据范围

1≤T≤100,
1≤R,C≤100,
0≤M≤1000

输入样例:
2
2 2
1 1
3 4
2 3
2 3 4
1 6 5 
输出样例:
8
16 

题目分析

这道题的意思就是要选择一条能摘到最多花生的数量的路线

对于这道题来说,我们依旧采用集合的思想来考虑,因为地图是二维的,所以我们考虑采用二位数组,f[i][j]他代表着走到第i,j位置的所有路线的最大值

从状态计算的角度来看,也就是集合划分,因为到达i,j的路线只有两种路线,一种是从i-1,j到i,j的位置,也就是从上到下,第二种就是从左到右走的

那么对于第i,j位置的结果就是

f ( i , j ) = max ⁡ { f ( i − 1 , j ) , f ( i , j − 1 ) } + w i , j f(i,j)=\max\{f(i-1,j),f(i,j-1)\}+w_{i,j} f(i,j)=max{f(i1,j),f(i,j1)}+wi,j

这里其实隐藏了一个初始化问题,就是边界情况,但是由于是要取最大值,恰好省略了,在其他DP问题是一定要分析初始化和边界问题的,其次是在递推的过程种,按照什么样的顺序计算呢,因为每一次算i,j时都需要知道之前的两个数值,这是可以画出一个有向图的,这里的顺序就是要按照拓扑序来计算,这道题按照数组遍历就恰好满足文章来源地址https://www.toymoban.com/news/detail-806502.html

示例代码

#include<iostream>
using namespace std;

const int N = 110;

int n,m;
int w[N][N];
int f[N][N];

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>w[i][j];
            }
        }
        
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                f[i][j] = max(f[i-1][j],f[i][j-1]) + w[i][j];
            }
        }
        cout<<f[n][m]<<'\n';
    }
}

到了这里,关于每日算法打卡:摘花生 day 14的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每日算法打卡:波动数列 day 16

    1214. 波动数列 题目难度:中等 题目来源:第五届蓝桥杯省赛C++ A组,第五届蓝桥杯省赛Java A组 观察这个数列: 1 3 0 2 -1 1 -2 … 这个数列中后一项总是比前一项增加2或者减少3, 且每一项都为整数 。 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增

    2024年01月16日
    浏览(31)
  • 每日算法打卡:移动距离 day 23

    1219. 移动距离 题目难度:简单 题目来源:第六届蓝桥杯省赛C++ B组,第六届蓝桥杯省赛Java A/C组 X星球居民小区的楼房全是一样的,并且按矩阵样式排列。 其楼房的编号为 1,2,3… 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为 6 时,开始情形如下:

    2024年01月24日
    浏览(32)
  • 每日算法打卡:连号区间数 day 18

    1210. 连号区间数 题目难度:简单 题目来源:第四届蓝桥杯省赛C++ B组,第四届蓝桥杯省赛Java B组 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 1 ∼ N 1 sim N 1 ∼ N 的某个排列中有多少个连号区间呢? 这里所说的连号区间的定义是: 如果区间 [ L , R ] [L, R] [ L , R ] 里的

    2024年01月19日
    浏览(47)
  • 每日算法打卡:机器人跳跃 day 11

    730. 机器人跳跃问题 题目难度:中等 题目来源:笔试题 机器人正在玩一个古老的基于 DOS 的游戏。 游戏中有 N+1 座建筑——从 0 到 N 编号,从左到右排列。 编号为 0 的建筑高度为 0 个单位,编号为 iii 的建筑高度为 H ( i ) H(i) H ( i ) 个单位。 起初,机器人在编号为 0 的建筑处

    2024年01月23日
    浏览(69)
  • java算法day45 | 动态规划part07 ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数

    题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 = m n)个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 输入描述:输入共一行,包含两个正整数,分别表示n, m 输出描述:输出一个整数,表示爬到楼顶的方法数

    2024年04月14日
    浏览(40)
  • 算法刷题打卡049 | 动态规划17

    动态规划终于要刷完了!虽然动规五部曲已经烂熟,也刷了有二三十题经典的动态规划题,但是自己实际做题时未必能用的很好,一方面是有些题目实在很难想到用动规解题,另一方面是即使想到动态规划,往往卡在状态的定义和状态转移上(更别说一些细节了,比如初始化

    2023年04月15日
    浏览(27)
  • Day46- 动态规划part14

    题目一:1143. 最长公共子序列 1143. 最长公共子序列 给定两个字符串  text1  和  text2 ,返回这两个字符串的最长  公共子序列  的长度。如果不存在  公共子序列  ,返回  0  。 一个字符串的  子序列   是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的

    2024年02月21日
    浏览(31)
  • 蓝桥杯必备动态规划第二弹-路径问题进阶

    最小路径和 先看一眼题干什么意思-我们可以知道,左上角到右下角的最小路径和 1.状态表示(第一步其实是最重要,因为他可以确定状态转移方程) dp[i][j]:到ij位置,路径之和是最小 2.状态转移方程(为什么这么写,首先你要能到ij位置,其次你需要+ij位置的数字) dp[i][j

    2024年02月08日
    浏览(28)
  • 动态规划Day14(子序列第二天)

    目录 1143.最长公共子序列 看到题目的第一想法                看到代码随想录之后的想法 自己实现过程中遇到的困难 1035.不相交的线 看到题目的第一想法                看到代码随想录之后的想法 自己实现过程中遇到的困难 53. 最大子序和 看到题目的第一想法     

    2024年01月24日
    浏览(32)
  • 蓝桥杯动态规划第三弹-路径问题进阶2.0

    目录 一、删除并获得点数 二、粉刷房子 三、买卖股票最佳时机 四、手续费的买卖股票 删除并且获得点数 (我觉得这个还是较为复杂一点的) 我是开始一点没有思路,然后放弃这个题了——后来发现他有一个重要的思路,我从来没有发现过的一个思路。 nums[1,1,2,2,4,4,5,8,8

    2024年02月06日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包