


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)
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; }
Eingabe
3, 3, 3, 1, {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}, {{3, 9}}
Ausgabe
4
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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

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 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 (<ul>) als Container verwenden und die Listenelemente (<l

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

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

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

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
