Acwing---1015.摘花生

news2025/1/12 12:16:21

摘花生

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

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

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

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

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

问Hello Kitty最多能够摘到多少颗花生
在这里插入图片描述

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

接下来是T组数据。

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

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

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

数据范围
1 ≤ T ≤ 100 , 1≤T≤100, 1T100,
1 ≤ R , C ≤ 100 , 1≤R,C≤100, 1R,C100,
0 ≤ M ≤ 1000 0≤M≤1000 0M1000

输入样例:

2
2 2
1 1
3 4
2 3
2 3 4
1 6 5

输出样例:

8
16

2.基本思想

DP

1.状态表示
①集合:定义 f [ i ] [ j ] f[i][j] f[i][j]为从 ( 1 , 1 ) (1, 1) (1,1)到达 ( i , j ) (i, j) (i,j)的所有方案
②属性:最大值
2.状态计算
( i , j ) (i, j) (i,j) ( i − 1 , j ) (i-1, j) (i1,j)即上方过来
( i , j ) (i, j) (i,j) ( i , j − 1 ) (i, j-1) (i,j1)即左方过来
即状态转移方程: f ( i , j ) = m a x 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)=maxf(i1,j),f(i,j1)+w(i,j)

优化:空间压缩
f [ i ] [ j ] f[i][j] f[i][j]只需要用到这一层和上一层的 f f f元素,所以还可以压缩成滚动数组。在此之上,还可以直接压缩成一维数组。

3.代码实现

DP:时间复杂度O(n^2)

import java.util.Scanner;

public class _1015摘花生 {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        int T = sc.nextInt();//T组数据
        int r, c;// 行 列
        int w[][] = new int[110][110];//花生数量
        while (true) {
            r = sc.nextInt();
            c = sc.nextInt();
            for (int i = 1; i <= r; i++) {
                for (int j = 1; j <= c; j++) {
                    w[i][j] = sc.nextInt();
                }
            }
            int dp[][] = new int[r + 1][c + 1];
            for (int i = 1; i <= r; i++) {
                for (int j = 1; j <= c; j++) {
                    dp[i][j] = Math.max(dp[i - 1][j] + w[i][j], dp[i][j - 1] + w[i][j]);
                }
            }
            System.out.println(dp[r][c]);
            if (!(--T > 0))return;//循环T组数据
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hudi集成Spark(二)Spark SQL方式

文章目录环境准备创建表插入数据查询数据更新数据删除数据覆盖数据修改表结构&#xff08;Alter Table&#xff09;修改分区存储过程&#xff08;Procedures&#xff09;Catalog&#xff1a;可以和Spark或者Flink中做一个共享&#xff0c;共享之后&#xff0c;计算引擎才可以去…

跨域与Nginx总结

跨源资源共享&#xff08;CORS&#xff09;是一种机制&#xff0c;他使浏览器可以访问由其他域提供的Web资源。通常&#xff0c;浏览器会使用同源策略来限制从脚本中发出的HTTP请求。例如&#xff0c;如果一个网站的资源位于https://haha.com&#xff0c;那么它就不能发出对htt…

使用ResNet50实现CIFAR10数据集的训练

如果对你有用的话&#xff0c;希望能够点赞支持一下&#xff0c;这样我就能有更多的动力更新更多的学习笔记了。&#x1f604;&#x1f604; 使用ResNet进行CIFAR-10数据集进行测试&#xff0c;这里使用的是将CIFAR-10数据集的分辨率扩大到32X32&#xff0c;因为算力相关的…

C语言常用内存函数的深度解析

文章目录前言memcpymemcpy函数的使用memcpy函数的自我实现memmovememmove函数的使用memmove函数的自我实现memcmpmemcmp函数的使用memcmp函数的自我实现memsetmemset函数的使用memset函数的自我实现写在最后前言 内存函数的使用广泛度大于常用字符串函数的使用广泛度&#xff0…

教程- VTK.js的基本介绍

VTK.js的核心是标准可视化工具包(VTK)库的JavaScript移植&#xff0c;这是一个c库&#xff0c;旨在促进数据可视化&#xff0c;在此基础上构建了科学可视化应用程序Paraview。VTK.js没有使用OpenGL&#xff0c;而是利用WebGL&#xff0c;主要关注几何和体渲染。因此&#xff0c…

JavaFx程序使用Gloun打包成Android平台App教程

0. 提要 !!! 适合有Maven基础&#xff0c;对JavaFx或JavaFX移动端感兴趣的朋友 提示必须在Linux环境下进行&#xff0c;可以使用虚拟机 推荐使用CentOS系统进行,虚拟机硬盘大小推荐最少给30G 不要像我一样,搞一半又去给文件系统根目录扩大容量 如果容量不够可以看篇博客: http…

C++模板(第二版)笔记之第十八章:模板的多态性

文章目录一、动态多态&#xff08;dynamic polymorphism&#xff09;二、静态多态三、静态多态VS动态多态1.术语2.优点和缺点3.结合两种多态形式&#xff1a;CRTP四、使用concepts五、新形势的设计模式六、泛型编程七、总结一、动态多态&#xff08;dynamic polymorphism&#…

【C语言】内存函数介绍

它们所在的头文件&#xff1a; &#xff08;这里出现的arr都为char类型数组&#xff09;strlen作用&#xff1a;计算一个字符串的长度本质&#xff1a;历经千辛找一个 \0 &#xff0c;找到 \0 就立马停止。&#xff08;就是找 \0 &#xff09;易错&#xff1a;strlen 返回值为 …

物联网无线通信技术中蓝牙和WIFI有哪些区别?

在物联网快速发展的时代&#xff0c;联网运行的设备越来越多&#xff0c;无线通信技术在物联网中发挥着举足轻重的作用&#xff0c;无线通信技术的发展改变了信息传输的方式&#xff0c;人们在任何时间、任何地点都可以访问设备&#xff0c;目前最常用的两种无线通信技术分别是…

云服务器CentOS前后端部署流程记录

部署流程记录 购买云服务ecs服务器&#xff0c;建立CentOS系统 通过xftpxshell访问远程服务 doker部署&#xff08;https://www.runoob.com/docker/centos-docker-install.html&#xff09; docker docker部署环境&#xff08;mysql&#xff09; docker常用命令 1. docker i…

【Linux】进程状态与优先级

文章目录进程状态概念Linux中的进程状态R(running)状态S(sleeping)状态D(disk sleep)状态T(stopped)状态t(tracing stop)状态X(dead)状态Z(zombie)状态特殊的孤儿进程进程优先级进程性质补充进程状态概念 《现代操作系统》中给出的进程状态的定义如下&#xff1a; 进程状态反映…

Qt+C++窗体界面中英文多语言切换

程序示例精选 QtC窗体界面中英文语言切换 如需安装运行环境或远程调试&#xff0c;见文章底部个人微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC窗体界面中英文语言切换>>编写代码&#xff0c;代码整洁&#xff0c;规则&#x…

【Linux】软件包管理器 yum

目录 一、什么是软件包 二、如何进行软件安装 1、yum 的使用 2、yum 配置 一、什么是软件包 在Linux下安装软件&#xff0c;一个通常的办法是下载到程序的源代码&#xff0c;并进行编译&#xff0c;得到可执行程序。但是这样太麻烦了&#xff0c;于是有些人把一些常用的软…

InnoDB数据存储结构

InnoDB数据存储结构 本专栏学习内容来自尚硅谷宋红康老师的视频 有兴趣的小伙伴可以点击视频地址观看 1. 数据库的存储结构&#xff1a;页 索引结构给我们提供了高效的索引方式&#xff0c;不过索引信息以及数据记录都是保存在文件上的&#xff0c;确切来说是存储在页结构中。…

不讨论颜色的前提下,如何证明自己不是色盲?神奇的零知识证明

0x01 一个小故事 《阿里巴巴与四十大盗》中有这样一段小故事&#xff1a; 阿里巴巴会芝麻开门的咒语&#xff0c;强盗向他拷问打开山洞石门的咒语&#xff0c;他不想让人听到咒语&#xff0c;又要向强盗证明他知道这个咒语。 那应该怎么办呢&#xff1f; 便对强盗说&#xf…

基于KVM安装部署RHCOS操作系统

参考&#xff1a;Openshift 4.4 静态 IP 离线安装系列&#xff1a;初始安装 - 米开朗基杨 - 博客园 一、Openshift OCP集群安装架构示意图 RHCOS 的默认用户是 core 如果安装有问题会进入 emergency shell&#xff0c;检查网络、域名解析是否正常&#xff0c;如果正常一般是以…

重修JAVA

程序员的差距是在构思上&#xff1a;思想决定了深度&#xff0c;思想的精髓高深是很多人学不来的&#xff01; 每一门语言都有它的特点&#xff0c;有优势也有劣势&#xff0c; 所以不必拘泥于招式&#xff0c;掌握底层原理即可&#xff01; 每一们语言实际上都是一个“工具”&…

如何在您的香港主机帐户上注册多个域名

注册多个域名非常普遍。事实上&#xff0c;香港主机服务提供商鼓励这样做&#xff0c;因为它既有意义又是必要的。下面将介绍决定为什么您可能需要在香港主机上注册多个域名的几个因素。注册多个域名的原因是什么?方便多个项目如果香港主机帐户的所有者在网络上有多个不同域名…

优化vue项目后, 启动编译项目过程中 报 javaScript heap out of memory 错误 及 nodejs内存溢出

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 1、优化vue项目后&#xff0c;运行npm run serve 启动编译项目过程中 报 javaScript heap out of memory 错误 2、项目启动时&#xff0c;出现 nodejs 内存溢出错误 问题描述 提示&#xff1a;遇到…

分布式事务的背景和解决方案

在常用的关系型数据库&#xff0c;都是具备事务特性的。 那什么是事务呢&#xff1f;事务是数据库运行的一个逻辑工作单元&#xff0c;在这个工作单元内的一系列SQL命令具有原子性操作的特点&#xff0c;也就是说这一系列SQL指令要么全部执行成功&#xff0c;要么全部回滚不执…