动态规划-扫地机器人最少初始电量

news2024/12/22 19:37:25

  扫地机器人在一个方格形状的地图中执行清扫任务,地图中每一个格子代表一个房间,地图用一个数组来表示:

  • 1)扫地机器人从地图左上角出发,每次清扫完一个房间后只能向石或向下走到另外一个房间,最后到达右下角的房间完成清扫任务;
  • 2)地图中每个房间的数字,负数表示清扫房间需要消耗的电量,非负数表示该房间有充电设备,可以在该房间充电获得的电量;
  • 3)扫地机器人清扫过程中,走出任何一个房间,电量都不能小于1。为了保证扫地机器人能完成最右下角的房间的清扫任务并走出房间,初始电量至少是多少?
      根据输入的地图,输出扫地机器人的初始电量。

在这里插入图片描述

  • 输入
3 3
-2-3 3
-5-10 1
0 30 -5

输出

7

解答:

#include <bits/stdc++.h>
using namespace std;
/*
3 3
-2 -3 3
-5 -10 1
0 30 -5
*/
int n, m;

int main(int argc, char** argv) {
  cin >> n >> m;
  vector<vector<int>> rooms(n, vector<int>(m));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> rooms[i][j];
    }
  }
  // dp[i][j] 代表机器人运动到[i][j]时,可以支撑它走完全程的当前电池电量的最小值
  // max 函数限制最小值
  vector<vector<int>> dp(n + 1, vector<int>(m + 1));
  dp[n - 1][m - 1] = max(1, -rooms[n - 1][m - 1] + 1);
  for (int i = n - 2; i >= 0; i--) {
    dp[i][m - 1] = dp[i + 1][m - 1] - rooms[i][m - 1];
    dp[i][m - 1] = max(1, dp[i][m - 1]);
  }
  for (int j = m - 2; j >= 0; j--) {
    dp[n - 1][j] = dp[n - 1][j + 1] - rooms[n - 1][j];
    dp[n - 1][j] = max(1, dp[n - 1][j]);
  }
  for (int i = n - 2; i >= 0; i--) {
    for (int j = m - 2; j >= 0; j--) {
      dp[i][j] = min(dp[i + 1][j] - rooms[i][j], dp[i][j + 1] - rooms[i][j]);
      dp[i][j] = max(1, dp[i][j]);
    }
  }
  cout << dp[0][0];
  return 0;
}

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

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

相关文章

LeetCode--196. 删除重复的电子邮箱

文章目录 1 题目描述2 解题思路2.1 代码实现 1 题目描述 表: Person ---------------------- | Column Name | Type | ---------------------- | id | int | | email | varchar | ----------------------id 是该表的主键列(具有唯一值的列)。 该表的每…

售货机相关的电路

一、货道选通矩阵电路&#xff0c;类似扫描电路&#xff0c;驱动哪个电机&#xff0c;就打开相应的行线与列线输出 二、MDB纸币器&#xff0c;虽然现在国内都是手机支付&#xff0c;但如果机器还是外销国外还是有用 三、硬币器电路&#xff0c;投币与退币&#xff0c;脉冲信号…

解决git action定时任务执行失败的方法

为了测试git action定时任务是否有效&#xff0c;你可能选择一个最近的时间测试&#xff0c; 但是发现怎么也触发不了&#xff0c;是不是觉得很苦恼。但是同样的时间&#xff0c;在第二天的定时任务又能成功运行。 这是什么原因&#xff1f; 原因就在上图&#xff0c;git act…

【算法|动态规划No.31 | 01背包问题】01背包模板题

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

[双指针](一) Leetcode 283.移动零和1089.复写零

[双指针] Leetcode 283.移动零和1089.复写零 移动零 283. 移动零 1.题意分析 (1) 给你一个数组&#xff0c;将数组中的所有0移动到数组的末尾 (2) 保证非0元素在数组中相对位置不变 (3) 在原数组中操作 2.解题思路 由于题目要求我们移动数组内容&#xff08;也就是交换两…

LED主流光源

LED主流光源 条形光源 &#xff08;1&#xff09;产品特点&#xff1a; ① 条形光源是大面积打光的首选光源&#xff0c;性价比高&#xff1b; ② 颜色可根据需求搭配&#xff0c;自由组合&#xff1b; ③ 光源照射角度与安装灵活可调。 &#xff08;2&#xff09;应用领域&a…

【Java 进阶篇】Java Request 获取请求体数据详解

在Java Web开发中&#xff0c;获取HTTP请求的请求体数据是一项常见任务。HTTP请求的请求体通常包含了客户端提交的数据&#xff0c;例如表单数据、JSON、XML等。在Java中&#xff0c;可以使用HttpServletRequest对象来获取HTTP请求的请求体数据。本文将详细解释如何使用Java获取…

java基础巩固

JDK11和JDK8是oracle重点维护的 常用的包 单例 多例 枚举 jar包打包 测试

大模型之十九-对话机器人

大语言模型的最早应用是Chatbot&#xff0c;其实我最早接触语义理解在2014年&#xff0c;2014年做智能音箱的时候&#xff0c;那时也是国内第一批做智能音箱的&#xff0c;在现在看起来当时的智能音箱比较傻&#xff0c;很多问题无法回答&#xff0c;长下文效果也不好&#xff…

决定放弃uniapp开发了,因为它实在是没有taro友好

被uniapp折腾了两天&#xff0c;实在是受不了它对vue3的支持和react的支持&#xff0c;可以这么说&#xff0c;uniapp完全没有支持vue3和react&#xff0c;这么说我觉得一点也不过分。相对于折腾了两天uniapp来讲&#xff0c;我使用taro只花了1个小时不到&#xff0c;就可以完美…

IO流框架,缓冲流

一.缓冲流有什么优点 Java中的缓冲流&#xff08;Buffered Stream&#xff09;具有以下优势&#xff1a; 提高效率&#xff1a;缓冲流通过在内存中缓存一部分数据&#xff0c;减少了直接从内存到磁盘或从磁盘到内存的频繁IO操作&#xff0c;从而提高了读写效率。缓冲区大小调整…

最新ChatGPT源码+AI绘画系统+详细图文搭建部署教程+支持OpenAI-GPT全模型+国内AI模型

一、智能AI创作系统 Mental AI创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说Mental AI是目前国内一款的ChatGPT对接OpenAI软件系统。…

SOLIDWORKS参数化设计之格式转换 慧德敏学

现在越来越多的企业开始进行模型的参数化设计规范&#xff0c;不管是使用SOLIDWORKS自带的方程式&#xff0c;还是使用SOLIDWORKS参数化设计插件&#xff0c;参数化的过程其实已经很透明了&#xff0c;都大同小异。 我们之前介绍过SolidKits.AutoWorks软件&#xff0c;可以很方…

【Python3】【力扣题】191. 位1的个数

【力扣题】题目描述&#xff1a; 二进制“与”运算&#xff1a;&#xff08;两个二进制中对应的每一位依次进行“与”运算&#xff09; 1&11&#xff0c;0&10&#xff0c;0&00 【Python3】代码&#xff1a; 1、解题思路&#xff1a;整数转为二进制字符串&#xff…

LeetCode刷题:27. 移除元素

文章目录 ⭐️27. 移除元素⭐️&#x1f510;题目描述&#x1f4a1;解题思路&#x1f511;代码 本题的题解代码是用C语言编写的。 &#x1f4d2;博客主页&#xff1a;2023Fighting的博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &a…

高级篇之ENC编码器多机位帧同步配置详解

高级篇之ENC编码器多机位帧同步配置详解 一 帧同步方案多样性1. 配合vMIX导播的帧同步方案3. 配合硬件导播的帧同步方案3. 配合芯象导播的帧同步 二 帧同步方案1实现步骤1. 准备设备2. 搭建环境3 配置设备3.1 配置固定机位3.2 配置帧同步转发端3.3 配置vMIX 三 效果对比1 不开帧…

openpnp - modify source code - SlotSchultzFeederConfigurationWizard

文章目录 openpnp - src modify - SlotSchultzFeederConfigurationWizard概述笔记备注END openpnp - src modify - SlotSchultzFeederConfigurationWizard 概述 在给SlotSchultzFeeder分配元件时, 发现坐标文件中产生的Part名称是拼起来的, 名字很长. 在飞达元件下拉列表中选…

【Linux】安装配置解决CentosMobaXterm的使用及Linux常用命令命令模式

目录 一、介绍 1. 背景 2. 讲述&功能 二、Centos安装配置&MobaXterm 1. 创建 2. 安装 3. 配置 4. MobaXterm使用 三、Linux常用命令&模式 1. 常用命令 2. 三种模式 3. 命令使用&换源 4. 拍照备份 一、介绍 1. 背景 CentOS的背景可以追溯到200…

软考系列(系统架构师)- 2011年系统架构师软考案例分析考点

试题一 软件架构&#xff08;质量属性效用树、架构风险、敏感点、权衡点&#xff09; 【问题2】&#xff08;13分&#xff09; 在架构评估过程中&#xff0c;需要正确识别系统的架构风险、敏感点和权衡点&#xff0c;并进行合理的架构决策。请用300字以内的文字给出系统架构风险…