当前位置: 首页 > news >正文

AcWing 1015. 摘花生

Problem: AcWing 1015. 摘花生

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

这是一个典型的动态规划问题。我们需要在一个二维网格中,从左上角走到右下角,每次只能向右或向下移动,目标是使得经过的路径上的数字之和最大。
我们可以定义dp[i][j]为从左上角走到(i, j)位置,能够得到的最大数字之和。然后我们可以根据dp[i - 1][j]和dp[i][j - 1]来更新dp[i][j]。

解题方法

我们首先初始化dp数组,然后从左上角开始,遍历每一个位置,对于每一个位置,我们都有从上面来和从左边来两种情况:如果我们从上面来,那么dp[i][j] = dp[i - 1][j] + w[i][j]。如果我们从左边来,那么dp[i][j] = dp[i][j - 1] + w[i][j]。我们取这两种情况的最大值,就是dp[i][j]的值。最后,dp[r][c]就是我们的答案。

复杂度

时间复杂度:

O ( r c ) O(rc) O(rc),因为我们需要遍历每一个位置。

空间复杂度:

O ( r c ) O(rc) O(rc),因为我们需要一个二维数组来存储dp值。

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static StreamTokenizer sr = new StreamTokenizer(in);static int t, r, c, m;static int MAXN = 110;static int[][] dp = new int[MAXN][MAXN];static int[][] w = new int[MAXN][MAXN];public static void main(String[] args) throws IOException {t = nextInt();while (t-- > 0) {r = nextInt();c = nextInt();for (int i = 1; i <= r; i++) {for (int j = 1; j <= c; j++) {w[i][j] = nextInt();}}for (int i = 1; i <= r; i++) {for (int j = 1; j <= c; j++) {dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]) + w[i][j];}}out.println(dp[r][c]);}out.flush();}static int nextInt() throws IOException {sr.nextToken();return (int) sr.nval;}}
http://www.lryc.cn/news/325385.html

相关文章:

  • Dalle-3、Sora、Stable Diffusion 3 掀起AIGC新浪潮
  • Unity 视频组件 VideoPlayer
  • RSTP环路避免实验(华为)
  • Arduino IDE工程代码多文件编程和中文设置
  • 【微服务】Eureka(服务注册,服务发现)
  • windows上ssh设置代理,直接访问公司内网
  • C++ union用法
  • JavaSE_运算符 案例分析
  • 15、Spring Cloud Alibaba Sentinel实现熔断与限流
  • Linux logout命令教程:如何安全地退出Linux会话(附实例详解和注意事项)
  • 数据结构——顺序表(C语言版)
  • Knative 助力 XTransfer 加速应用云原生 Serverless 化
  • 服务器离线配置vscode连接,conda虚拟环境
  • 各种需要使用的方法-->vue/微信小程序/layui
  • 360奇酷刷机 360刷机助手 QGDP360手机QGDP刷机
  • 2299. 强密码检验器 II
  • 跟着cherno手搓游戏引擎【29】Batch简单合批
  • 粘包/半包及解决方案
  • 2024华为软件精英挑战赛记录
  • 数据可视化艺术:Matplotlib与Seaborn实战
  • python初级第一次作业
  • Spring Boot整合Camunda打造高效工作流程
  • 2.8、下拉刷新与上拉加载
  • java Web餐馆订单管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc
  • 小程序从入门到入坑:事件系统
  • Windows蓝牙驱动开发之模拟HID设备(二)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)
  • 快速区分清楚图形渲染中的AABB,KD树和BVH这些概念
  • Rust 的 HashMap 特定键值元素值的累加方法
  • Java后端项目性能优化实战-群发通知
  • 5、Jenkins持续集成-Maven和Tomcat的安装与配置