C++程序用于计算机器人在网格中完成一次行程所需的总成本
假设我们有一个尺寸为 h x w 的网格。网格中的每个单元格包含一个正整数。现在有一个路径查找机器人放置在特定的单元格(p,q)上(其中 p 是行号,q 是列号),它可以移动到单元格(i,j)。移动操作有一个特定的成本,等于 |p - i| + |q - j|。现在有 q 个旅行,具有以下属性。
每个旅行有两个值(x,y),并且有一个共同的值 d。
机器人放置在一个值为 x 的单元格上,然后移动到另一个值为 x + d 的单元格。
然后它移动到另一个值为 x + d + d 的单元格。这个过程将继续,直到机器人到达一个值大于或等于 y 的单元格。
y - x 是 d 的倍数。
给定这些旅行,我们必须找出每次旅行的总成本。如果机器人无法移动,则旅行成本为 0。
因此,如果输入是 h = 3,w = 3,d = 3,q = 1,grid = {{2,6,8},{7,3,4},{5,1,9}},trips = {{3,9}},那么输出将是 4。
3 在单元格(2,2)上
6 在单元格(1,2)上
9 在单元格(3,3)上
总成本 = |(1 - 2)+(2 - 2)| + |(3 - 1)+(3 - 2)| = 4。
要解决这个问题,我们将按照以下步骤进行:
Define one map loc for initialize i := 0, when i < h, update (increase i by 1), do: for initialize j := 0, when j < w, update (increase j by 1), do: loc[grid[i, j]] := new pair(i, j) Define an array dp[d + 1] for initialize i := 1, when i <= d, update (increase i by 1), do: j := i while j < w * h, do: n := j + d if j + d > w * h, then: Come out from the loop dx := |first value of loc[n] - first value of loc[j]| dy := |second value of loc[n] - second value of loc[j]| j := j + d insert dx + dy at the end of dp[i] for initialize j := 1, when j < size of dp[i], update (increase j by 1), do: dp[i, j] := dp[i, j] + dp[i, j - 1] for initialize i := 0, when i < q, update (increase i by 1), do: tot := 0 le := first value of trips[i] ri := second value of trips[i] if ri mod d is same as 0, then: f := d Otherwise, f := ri mod d pxl := (le - f) / d pxr := (ri - f) / d if le is same as f, then: if ri is same as f, then: tot := 0 Otherwise tot := tot + (dp[f, pxr - 1] - 0) Otherwise if ri is same as f, then: tot := 0 Otherwise tot := tot + dp[f, pxr - 1] - dp[f, pxl - 1] print(tot)
让我们看下面的实现以更好地理解 −
示例
#include <bits/stdc++.h> using namespace std; const int INF = 1e9; void solve(int h, int w, int d, int q, vector<vector<int>> grid, vector<pair<int, int>> trips) { map<int, pair<int, int>> loc; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) loc[grid[i][j]] = make_pair(i, j); } vector<int> dp[d + 1]; for (int i = 1; i <= d; i++) { int j = i; while (j < w * h) { int n = j + d; if (j + d > w * h) break; int dx = abs(loc[n].first - loc[j].first); int dy = abs(loc[n].second - loc[j].second); j += d; dp[i].push_back(dx + dy); } for (j = 1; j < dp[i].size(); j++) dp[i][j] += dp[i][j - 1]; } for (int i = 0; i < q; i++) { int tot = 0; int le, ri; le = trips[i].first; ri = trips[i].second; int f; if (ri % d == 0) f = d; else f = ri % d; int pxl, pxr; pxl = (le - f) / d; pxr = (ri - f) / d; if (le == f){ if (ri == f) tot = 0; else tot += (dp[f][pxr - 1] - 0); } else { if (ri == f) tot = 0; else tot += dp[f][pxr - 1] - dp[f][pxl - 1]; } cout<< tot << endl; } } int main() { int h = 3, w = 3, d = 3, q = 1; vector<vector<int>> grid = {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}; vector<pair<int, int>> trips = {{3, 9}}; solve(h, w, d, q, grid, trips); return 0; }
Input
3, 3, 3, 1, {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}, {{3, 9}}
输出
4
以上是C++程序用于计算机器人在网格中完成一次行程所需的总成本的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

一、前言目前领先的目标检测器是基于深度CNN的主干分类器网络重新调整用途的两级或单级网络。YOLOv3就是这样一种众所周知的最先进的单级检测器,它接收输入图像并将其划分为大小相等的网格矩阵。具有目标中心的网格单元负责检测特定目标。今天分享的,就是提出了一种新的数学方法,该方法为每个目标分配多个网格,以实现精确的tight-fit边界框预测。研究者还提出了一种有效的离线复制粘贴数据增强来进行目标检测。新提出的方法显着优于一些当前最先进的目标检测器,并有望获得更好的性能。二、背景目标检测网络旨在使用

我昨天看到了一张有趣的图片,上面是一个“AI取代人类路径的级别图”。图片根据图中的显示,游戏分为六个不同的等级,从E1到E8+。从图中我们可以观察到,人工智能(AI)正在取代人类在不同领域的应用。而人工智能的应用领域路径则是由其容错率来决定的。简而言之,这里的容错率就是指试错所带来的成本。AI将逐渐取代从容错率较高到较低的行业,逐渐“取代”人类职业。以往,我们常认为创意型的工作需要依赖人类的思维,是不容易被取代的。然而,随着人工智能的发展,这种看法似乎并不完全正确。像创意类的工作往往没有固定答案

1、打开苹果手机的桌面,找到并点击进入【设置】,2、在设置的页面点击进入【相机】。3、点击打开【网格】右侧的开关即可。

CSS布局技巧:实现圆形网格图标布局的最佳实践在现代网页设计中,网格布局是一种常见且强大的布局技术。而圆形网格图标布局则是一种更加独特和有趣的设计选择。本文将介绍一些最佳实践和具体代码示例,帮助你实现圆形网格图标布局。HTML结构首先,我们需要设置一个容器元素,在这个容器里放置图标。我们可以使用一个无序列表(<ul>)作为容器,列表项(<l

自 2020 年 GPT-3 横空出世以来,ChatGPT 的爆火再一次将 GPT 家族的生成式大型语言模型带到聚光灯下,它们在各种任务中都已显示出了强大的性能。但模型的庞大规模也带来了计算成本的上升和部署难度的增加。比如,GPT‑175B 模型总计至少占 320GB 半精度 (FP16) 格式的存储空间,在推理时,起码需要五个 80 GB 存储空间的 A100 GPU。模型压缩(model compression)是当前使用较多的一种降低大模型计算成本的方法,但迄今为止,几乎所有现有的

大卫·林思高编译|言征51CTO技术栈(微信号:blog51cto)的出品在技术领域有一个不成文的规则:大家都喜欢采用别人的技术。但对于许多企业来说,生成式人工智能似乎并不符合这一模式生成式AI正在迅速推动一些关键决策。每个组织都面临着一个重要的选择:是内部构建定制的生成式AI平台,还是从AI供应商那里购买预打包的解决方案(通常作为云服务提供)DIY有利于数量和机会。这很奇怪,但原因可能会让你感到惊讶。它们甚至可能会引导您重新思考您的企业genAI战略1、完整的定制和控制重新写内容如下:建立一个

在本文中,我们给出了一个问题,我们需要找到从点A到点B的总路径数,其中A和B是固定点,即A是网格中的左上角点,B是网格中的右下角点,例如−Input:N=5Output:252Input:N=4Output:70Input:N=3Output:20在给定的问题中,我们可以通过简单的观察来形式化答案并得出结果。寻找解决方案的方法在这种方法中,我们通过观察得出一个公式,即从A到B穿过网格时,我们需要向右行进n次,向下行进n次,这意味着我们需要找到所有可能的路径组合,因此我们得到了

假设我们有一个hxw的网格。网格在一个名为'initGrid'的二维数组中表示,其中网格中的每个单元格都用'#'或'.'表示。'#'表示网格中有障碍物,'.'表示该单元格上有一条路径。现在,一个机器人被放置在网格上的一个单元格'c'上,该单元格具有行号x和列号y。机器人必须从一个具有行号p和列号q的单元格'd'移动到另一个单元格。单元格坐标c和d都以整数对的形式给出。现在,机器人可以按以下方式从一个单元格移动到另一个单元格:如果机器人想要移动到的单元格位于当前单元格的垂直或水平相邻位置,机器人可
