目錄
範例
Input
輸出
首頁 後端開發 C++ C++程式用於計算機器人在網格中完成一次行程所需的總成本

C++程式用於計算機器人在網格中完成一次行程所需的總成本

Aug 25, 2023 pm 04:53 PM
成本 網格 計算機器人

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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1545
276
用於精確目標偵測的多網格冗餘邊界框標註 用於精確目標偵測的多網格冗餘邊界框標註 Jun 01, 2024 pm 09:46 PM

一、前言目前領先的目標偵測器是基於深度CNN的主幹分類器網路重新調整用途的兩級或單級網路。 YOLOv3就是這樣一種眾所周知的最先進的單級檢測器,它接收輸入圖像並將其劃分為大小相等的網格矩陣。具有目標中心的網格單元負責偵測特定目標。今天分享的,就是提出了一種新的數學方法,該方法為每個目標分配多個網格,以實現精確的tight-fit邊界框預測。研究者也提出了一種有效的離線複製貼上資料增強來進行目標偵測。新提出的方法顯著優於一些目前最先進的目標偵測器,並有望獲得更好的效能。二、背景目標偵測網路旨在使用

路徑圖展示了AI '替代” 人類職業的趨勢 路徑圖展示了AI '替代” 人類職業的趨勢 Jan 04, 2024 pm 04:32 PM

我昨天看到了一張有趣的圖片,上面是一個「AI取代人類路徑的級別圖」。圖片根據圖中的顯示,遊戲分為六個不同的等級,從E1到E8+。從圖中我們可以觀察到,人工智慧(AI)正在取代人類在不同領域的應用。而人工智慧的應用領域路徑則是由其容錯率來決定的。簡言之,這裡的容錯率就是指試錯所帶來的成本。 AI將逐漸取代從容錯率較高到較低的行業,並逐漸「取代」人類職業。以往,我們常認為創意型的工作需要依賴人類的思維,是不容易被取代的。然而,隨著人工智慧的發展,這種看法似乎並不完全正確。像創意類的工作往往沒有固定答案

蘋果手機中設定相機網格的操作步驟 蘋果手機中設定相機網格的操作步驟 Mar 26, 2024 pm 07:21 PM

1.開啟蘋果手機的桌面,找到並點選進入【設定】,2、在設定的頁面點選進入【相機】。 3.點選打開【網格】右側的開關即可。

CSS佈局技巧:實現圓形網格圖示佈局的最佳實踐 CSS佈局技巧:實現圓形網格圖示佈局的最佳實踐 Oct 20, 2023 am 10:46 AM

CSS佈局技巧:實現圓形網格圖示佈局的最佳實踐在現代網頁設計中,網格佈局是一種常見且強大的佈局技術。而圓形網格圖示佈局則是更獨特有趣的設計選擇。本文將介紹一些最佳實踐和具體程式碼範例,幫助你實現圓形網格圖示佈局。 HTML結構首先,我們需要設定一個容器元素,在這個容器裡放置圖示。我們可以使用一個無序列表(&lt;ul&gt;)作為容器,列表項目(&lt;l

首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度 首個千億模型壓縮演算法 SparseGPT 來了,降低算力成本的同時保持高精度 Apr 12, 2023 pm 01:01 PM

自 2020 年 GPT-3 橫空出世以來,ChatGPT 的爆火再一次將 GPT 家族的生成式大型語言模型帶到聚光燈下,它們在各種任務中都已顯示出了強大的性能。但模型的龐大規模也帶來了計算成本的上升和部署難度的增加。例如,GPT‑175B 模型總計至少佔 320GB 半精度 (FP16) 格式的儲存空間,在推理時,起碼需要五個 80 GB 儲存空間的 A100 GPU。模型壓縮(model compression)是目前使用較多的一種降低大模型計算成本的方法,但迄今為止,幾乎所有現有的

雲端生成式AI:自建還是購買? 雲端生成式AI:自建還是購買? Dec 19, 2023 pm 08:15 PM

大衛林思高編譯|言徵51CTO技術棧(微訊號:blog51cto)的出品在技術領域有一個不成文的規則:大家都喜歡採用別人的技術。但對許多企業來說,生成式人工智慧似乎不符合這項模式生成式AI正迅速推動一些關鍵決策。每個組織都面臨一個重要的選擇:是內部建立客製化的生成式AI平台,還是從AI供應商購買預先包裝的解決方案(通常是作為雲端服務提供)DIY有利於數量和機會。這很奇怪,但原因可能會讓你感到驚訝。它們甚至可能會引導您重新思考您的企業genAI策略1、完整的客製化和控制重寫內容如下:建立一個

使用C++編程,找到在網格中從一個點到另一個點的路徑數 使用C++編程,找到在網格中從一個點到另一個點的路徑數 Aug 29, 2023 pm 10:25 PM

在本文中,我們給了一個問題,我們需要找到從點A到點B的總路徑數,其中A和B是固定點,即A是網格中的左上角點,B是網格中的右下角點,例如−Input:N=5Output:252Input:N=4Output:70Input:N=3Output:20在給定的問題中,我們可以透過簡單的觀察來形式化答案並得出結果。尋找解決方案的方法在這種方法中,我們透過觀察得出一個公式,即從A到B穿過網格時,我們需要向右行進n次,向下行進n次,這意味著我們需要找到所有可能的路徑組合,因此我們得到了

曝 Meta 已放棄開發蘋果 Vision Pro 競賽 主要是成本太高 曝 Meta 已放棄開發蘋果 Vision Pro 競賽 主要是成本太高 Aug 27, 2024 pm 03:33 PM

根據外媒報道,Meta的技術長幾乎確認了該公司放棄開發能夠與蘋果VisionPro相媲美的設備。 MetaLaJolla在VisionPro發布之前,Meta宣布了其虛擬實境和混合實境耳機的四年發展規劃。其中一個重要部分是開發內部代號為LaJolla的產品,它本來有可能成為VisionPro的主要競爭對手。據了解,Meta於2023年11月開始了LaJolla的開發工作,但在2024年8月中旬左右叫停了該項目,原因可能是成本問題。據說這項決定是MetaCEO祖克柏和CTO安德魯·博斯沃思等人做

See all articles