Inhaltsverzeichnis
Beispiel
Eingabe
Ausgabe
Heim Backend-Entwicklung C++ C++-Programm zur Berechnung der Gesamtkosten, die ein Roboter benötigt, um eine Fahrt in einem Raster abzuschließen

C++-Programm zur Berechnung der Gesamtkosten, die ein Roboter benötigt, um eine Fahrt in einem Raster abzuschließen

Aug 25, 2023 pm 04:53 PM
成本 网格 计算机器人

C++-Programm zur Berechnung der Gesamtkosten, die ein Roboter benötigt, um eine Fahrt in einem Raster abzuschließen

Angenommen, wir haben ein Raster der Größe H x B. Jede Zelle im Raster enthält eine positive ganze Zahl. Jetzt gibt es einen Wegfindungsroboter, der auf einer bestimmten Zelle (p, q) platziert ist (wobei p die Zeilennummer und q die Spaltennummer ist) und er kann sich zu Zelle (i, j) bewegen. Der Verschiebungsvorgang hat spezifische Kosten von |p – i| + |q – j|. Mittlerweile gibt es q Fahrten mit folgenden Eigenschaften.

  • Jede Fahrt hat zwei Werte (x, y) und einen gemeinsamen Wert d.

  • Der Roboter wird auf eine Zelle mit dem Wert x gesetzt und bewegt sich dann zu einer anderen Zelle mit dem Wert x + d.

  • Dann wird es in eine andere Zelle mit dem Wert x + d + d verschoben. Dieser Vorgang wird fortgesetzt, bis der Roboter eine Zelle mit einem Wert größer oder gleich y erreicht.

  • y - x ist ein Vielfaches von d.

Angesichts dieser Reisen müssen wir die Gesamtkosten jeder Reise ermitteln. Wenn sich der Roboter nicht bewegen kann, betragen die Reisekosten 0.

Wenn die Eingabe also h = 3, w = 3, d = 3, q ​​​​= 1, Gitter = {{2, 6, 8}, {7, 3, 4}, {5, 1, 9 ist }} , tripes = {{3, 9}}, dann ist die Ausgabe 4.

3 auf Zelle (2, 2)

6 auf Zelle (1, 2)

9 auf Zelle (3, 3)

Gesamtkosten = | (1 - 2) + (2 - 2) | (3 - 1) + (3 - 2) | = 4.

Um dieses Problem zu lösen, werden wir die folgenden Schritte ausführen:

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)
Nach dem Login kopieren

Sehen wir uns zum besseren Verständnis die Implementierung unten an −

Beispiel

#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;
}
Nach dem Login kopieren

Eingabe

3, 3, 3, 1, {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}, {{3, 9}}
Nach dem Login kopieren

Ausgabe

4
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonC++-Programm zur Berechnung der Gesamtkosten, die ein Roboter benötigt, um eine Fahrt in einem Raster abzuschließen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Redundante Begrenzungsrahmenanmerkung mit mehreren Gittern für eine genaue Objekterkennung Redundante Begrenzungsrahmenanmerkung mit mehreren Gittern für eine genaue Objekterkennung Jun 01, 2024 pm 09:46 PM

1. Einleitung Derzeit sind die führenden Objektdetektoren zweistufige oder einstufige Netzwerke, die auf dem umfunktionierten Backbone-Klassifizierungsnetzwerk von Deep CNN basieren. YOLOv3 ist ein solcher bekannter hochmoderner einstufiger Detektor, der ein Eingabebild empfängt und es in eine gleich große Gittermatrix aufteilt. Für die Erkennung spezifischer Ziele sind Gitterzellen mit Zielzentren zuständig. Was ich heute vorstelle, ist eine neue mathematische Methode, die jedem Ziel mehrere Gitter zuordnet, um eine genaue Vorhersage des Begrenzungsrahmens zu erreichen. Die Forscher schlugen außerdem eine effektive Offline-Datenverbesserung durch Kopieren und Einfügen für die Zielerkennung vor. Die neu vorgeschlagene Methode übertrifft einige aktuelle Objektdetektoren auf dem neuesten Stand der Technik deutlich und verspricht eine bessere Leistung. 2. Das Hintergrundzielerkennungsnetzwerk ist für die Verwendung konzipiert

Roadmap zeigt den Trend, dass KI menschliche Berufe „ersetzt'. Roadmap zeigt den Trend, dass KI menschliche Berufe „ersetzt'. Jan 04, 2024 pm 04:32 PM

Ich habe gestern ein interessantes Bild gesehen, das eine „Ebenenkarte der KI, die menschliche Wege ersetzt“ zeigte. Wie im Bild gezeigt, ist das Spiel in sechs verschiedene Level unterteilt, von E1 bis E8+. Anhand der Abbildung können wir erkennen, dass künstliche Intelligenz (KI) menschliche Anwendungen in verschiedenen Bereichen ersetzt. Der Anwendungsbereich der künstlichen Intelligenz wird durch ihre Fehlertoleranzrate bestimmt. Kurz gesagt bezieht sich die Fehlertoleranz hier auf die Kosten für Versuch und Irrtum. KI wird nach und nach Branchen mit höheren bis niedrigeren Fehlertoleranzraten ersetzen und menschliche Berufe nach und nach „ersetzen“. Früher dachten wir oft, kreative Arbeit beruhe auf menschlichem Denken und sei nicht einfach zu ersetzen. Mit der Entwicklung der künstlichen Intelligenz scheint diese Ansicht jedoch nicht ganz richtig zu sein. In kreativen Berufen gibt es oft keine festen Antworten

Schritte zum Einrichten des Kamerarasters auf dem iPhone Schritte zum Einrichten des Kamerarasters auf dem iPhone Mar 26, 2024 pm 07:21 PM

1. Öffnen Sie den Desktop Ihres iPhones, suchen Sie nach [Einstellungen] und klicken Sie darauf, um sie aufzurufen. 2. Klicken Sie auf der Einstellungsseite auf [Kamera], um sie aufzurufen. 3. Klicken Sie, um den Schalter auf der rechten Seite von [Raster] einzuschalten.

CSS-Layout-Tipps: Best Practices für die Implementierung des kreisförmigen Rastersymbol-Layouts CSS-Layout-Tipps: Best Practices für die Implementierung des kreisförmigen Rastersymbol-Layouts Oct 20, 2023 am 10:46 AM

CSS-Layout-Tipps: Best Practices für die Implementierung des kreisförmigen Rastersymbol-Layouts Das Rasterlayout ist eine gängige und leistungsstarke Layouttechnik im modernen Webdesign. Das kreisförmige Gittersymbol-Layout ist eine einzigartigere und interessantere Designwahl. In diesem Artikel werden einige Best Practices und spezifische Codebeispiele vorgestellt, die Ihnen bei der Implementierung eines kreisförmigen Rastersymbol-Layouts helfen. HTML-Struktur Zuerst müssen wir ein Containerelement einrichten und das Symbol in diesem Container platzieren. Wir können eine ungeordnete Liste (&lt;ul&gt;) als Container verwenden und die Listenelemente (&lt;l

Der erste 100-Milliarden-Modell-Komprimierungsalgorithmus SparseGPT ist da und reduziert die Kosten für die Rechenleistung bei gleichzeitiger Beibehaltung einer hohen Genauigkeit Der erste 100-Milliarden-Modell-Komprimierungsalgorithmus SparseGPT ist da und reduziert die Kosten für die Rechenleistung bei gleichzeitiger Beibehaltung einer hohen Genauigkeit Apr 12, 2023 pm 01:01 PM

Seit der Einführung von GPT-3 im Jahr 2020 hat die Popularität von ChatGPT die generativen groß angelegten Sprachmodelle der GPT-Familie erneut ins Rampenlicht gerückt und sie haben bei verschiedenen Aufgaben eine starke Leistung gezeigt. Der enorme Umfang des Modells führt jedoch auch zu höheren Rechenkosten und erhöhten Schwierigkeiten bei der Bereitstellung. Das Modell GPT-175B verfügt beispielsweise über insgesamt mindestens 320 GB Speicher im Half-Precision-Format (FP16), was für die Inferenz mindestens fünf A100-GPUs mit 80 GB Speicher erfordert. Die Modellkomprimierung ist derzeit eine häufig verwendete Methode, um den Rechenaufwand großer Modelle zu reduzieren, aber bisher gibt es fast alle

Generative KI in der Cloud: Bauen oder kaufen? Generative KI in der Cloud: Bauen oder kaufen? Dec 19, 2023 pm 08:15 PM

Zusammengestellt von David Linsigao |. Produkte produziert von Yanzheng 51CTO Technology Stack (WeChat ID: blog51cto) Es gibt eine ungeschriebene Regel im Technologiebereich: Jeder nutzt gerne die Technologie anderer Leute. Doch für viele Unternehmen scheint generative KI nicht in dieses Schema zu passen. Generative KI treibt schnell einige wichtige Entscheidungen voran. Jedes Unternehmen steht vor einer wichtigen Entscheidung: ob es intern eine benutzerdefinierte generative KI-Plattform aufbaut oder eine vorgefertigte Lösung von einem KI-Anbieter kauft (häufig als Cloud-Service angeboten, was Volumen und Möglichkeiten begünstigt). Es ist seltsam, aber der Grund könnte Sie überraschen. Sie könnten Sie sogar dazu veranlassen, die GenAI-Strategie Ihres Unternehmens zu überdenken. 1. Vollständige Anpassung und Kontrolle. Schreiben Sie den Inhalt wie folgt um: Erstellen Sie eine

Ermitteln Sie beim Programmieren in C++ die Anzahl der Pfade von einem Punkt zu einem anderen in einem Raster Ermitteln Sie beim Programmieren in C++ die Anzahl der Pfade von einem Punkt zu einem anderen in einem Raster Aug 29, 2023 pm 10:25 PM

In diesem Artikel erhalten wir ein Problem, bei dem wir die Gesamtzahl der Pfade von Punkt A zu Punkt B ermitteln müssen, wobei A und B feste Punkte sind, d. h. A ist der obere linke Eckpunkt im Gitter und B der untere rechter Eckpunkt, zum Beispiel −Input:N=5Output:252Input:N=4Output:70Input:N=3Output:20 In dem gegebenen Problem können wir die Antwort formalisieren und das Ergebnis durch einfache Beobachtungen ableiten. Methode zur Lösungsfindung Bei dieser Methode leiten wir eine Formel ab, indem wir beobachten, dass wir beim Überqueren des Gitters von A nach B n-mal nach rechts und n-mal nach unten gehen müssen, was bedeutet, dass wir alle möglichen Pfadkombinationen finden müssen, also erhalten wir

C++-Programm, um die Anzahl der Sprünge zu ermitteln, die ein Roboter benötigt, um eine bestimmte Zelle in einem Raster zu erreichen C++-Programm, um die Anzahl der Sprünge zu ermitteln, die ein Roboter benötigt, um eine bestimmte Zelle in einem Raster zu erreichen Sep 17, 2023 pm 07:17 PM

Nehmen wir an, wir haben ein HxW-Gitter. Das Raster wird in einem zweidimensionalen Array namens „initGrid“ dargestellt, wobei jede Zelle im Raster durch ein „#“ oder „.“ dargestellt wird. „#“ bedeutet, dass sich im Gitter ein Hindernis befindet, „.“ bedeutet, dass sich in dieser Zelle ein Pfad befindet. Nun wird ein Roboter auf einer Zelle „c“ im Raster platziert, die die Zeilennummer x und die Spaltennummer y hat. Der Roboter muss sich von einer Zelle „d“ mit der Zeilennummer p und der Spaltennummer q zu einer anderen Zelle bewegen. Die Zellkoordinaten c und d werden beide als Ganzzahlpaare angegeben. Der Roboter kann sich nun wie folgt von einer Zelle zur anderen bewegen: Befindet sich die Zelle, zu der sich der Roboter bewegen möchte, vertikal oder horizontal neben der aktuellen Zelle, kann der Roboter dies tun

See all articles