


C++-Programm, um die Anzahl der Sprünge zu ermitteln, die ein Roboter benötigt, um eine bestimmte Zelle in einem Raster zu erreichen
Angenommen, wir haben ein Raster von H x B. 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 in eine andere Zelle bewegen. Die Zellkoordinaten c und d werden beide als Ganzzahlpaare angegeben. Nun kann sich der Roboter wie folgt von einer Zelle zur anderen bewegen:
Wenn sich die Zelle, zu der sich der Roboter bewegen möchte, vertikal oder horizontal neben der aktuellen Zelle befindet, kann der Roboter direkt von einer Zelle zur anderen gehen.
Der Roboter kann zu jeder Zelle in einem 5x5-Bereich springen, der um seinen aktuellen Standort zentriert ist.
Der Roboter kann sich nur zu einer anderen Zelle im Gitter bewegen, die keine Hindernisse enthält. Auch der Roboter kann das Gitter nicht verlassen.
Wir müssen herausfinden, wie viele Sprünge der Roboter braucht, um das Ziel zu erreichen.
Wenn also die Eingabe h = 4, w = 4, c = {2, 1}, d = {4, 4}, initGrid = {"#...", ".##.", ".. .#", "..#."}, dann ist die Ausgabe 1. Der Roboter braucht nur einen Sprung, um sein Ziel zu erreichen.
Um dieses Problem zu lösen, werden wir die folgenden Schritte ausführen:
N:= 100 Define intger pairs s and t. Define an array grid of size: N. Define an array dst of size: N x N. Define a struct node that contains integer values a, b, and e. Define a function check(), this will take a, b, return a >= 0 AND a < h AND b >= 0 AND b < w Define a function bfs(), this will take a, b, 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: dst[i, j] := infinity dst[a, b] := 0 Define one deque doubleq Insert a node containing values {a, b, and dst[a, b]} at the end of doubleq while (not doubleq is empty), do: nd := first element of doubleq if e value of nd > dst[a value of nd, b value of nd], then: Ignore the following part, skip to the next iteration for initialize diffx := -2, when diffx <= 2, update (increase diffx by 1), do: for initialize diffy := -2, when diffy <= 2, update (increase diffy by 1), do: tm := |diffx + |diffy|| nx := a value of nd + diffx, ny = b value of nd + diffy if check(nx, ny) and grid[nx, ny] is same as '.', then: w := (if tm > 1, then 1, otherwise 0) if dst[a value of nd, b value of nd] + w < dst[nx, ny], then: dst[nx, ny] := dst[a value of nd, b value of nd] + w if w is same as 0, then: insert node containing values ({nx, ny, dst[nx, ny]}) at the beginning of doubleq. Otherwise insert node containing values ({nx, ny, dst[nx, ny]}) at the end of doubleq. s := c t := d (decrease first value of s by 1) (decrease second value of s by 1) (decrease first value of t by 1) (decrease second value of t by 1) for initialize i := 0, when i < h, update (increase i by 1), do: grid[i] := initGrid[i] bfs(first value of s, second value of s) print(if dst[first value of t, second value of t] is same as infinity, then -1, otherwise dst[first value of t, second value of t])
Beispiel
Sehen wir uns die Implementierung unten an, um ein besseres Verständnis zu erhalten −
#include <bits/stdc++.h> using namespace std; const int INF = 1e9; #define N 100 int h, w; pair<int, int> s, t; string grid[N]; int dst[N][N]; struct node { int a, b, e; }; bool check(int a, int b) { return a >= 0 && a < h && b >= 0 && b < w; } void bfs(int a, int b) { for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) dst[i][j] = INF; } dst[a][b] = 0; deque<node> doubleq; doubleq.push_back({a, b, dst[a][b]}); while (!doubleq.empty()) { node nd = doubleq.front(); doubleq.pop_front(); if (nd.e > dst[nd.a][nd.b]) continue; for (int diffx = -2; diffx <= 2; diffx++) { for (int diffy = -2; diffy <= 2; diffy++) { int tm = abs(diffx) + abs(diffy); int nx = nd.a + diffx, ny = nd.b + diffy; if (check(nx, ny) && grid[nx][ny] == '.') { int w = (tm > 1) ? 1 : 0; if (dst[nd.a][nd.b] + w < dst[nx][ny]) { dst[nx][ny] = dst[nd.a][nd.b] + w; if (w == 0) doubleq.push_front({nx, ny, dst[nx][ny]}); else doubleq.push_back({nx, ny, dst[nx][ny]}); } } } } } } void solve(pair<int,int> c, pair<int, int> d, string initGrid[]){ s = c; t = d; s.first--, s.second--, t.first--, t.second--; for(int i = 0; i < h; i++) grid[i] = initGrid[i]; bfs(s.first, s.second); cout << (dst[t.first][t.second] == INF ? -1 : dst[t.first][t.second]) << '\n'; } int main() { h = 4, w = 4; pair<int,int> c = {2, 1}, d = {4, 4}; string initGrid[] = {"#...", ".##.", "...#", "..#."}; solve(c, d, initGrid); return 0; }
Eingabe
4, 4, {2, 1}, {4, 4}, {"#...", ".##.", "...#", "..#."}
Ausgabe
1
Das obige ist der detaillierte Inhalt vonC++-Programm, um die Anzahl der Sprünge zu ermitteln, die ein Roboter benötigt, um eine bestimmte Zelle in einem Raster zu erreichen. 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



Der humanoide Roboter Ameca wurde auf die zweite Generation aufgerüstet! Kürzlich erschien auf der World Mobile Communications Conference MWC2024 erneut der weltweit fortschrittlichste Roboter Ameca. Rund um den Veranstaltungsort lockte Ameca zahlreiche Zuschauer an. Mit dem Segen von GPT-4 kann Ameca in Echtzeit auf verschiedene Probleme reagieren. „Lass uns tanzen.“ Auf die Frage, ob sie Gefühle habe, antwortete Ameca mit einer Reihe von Gesichtsausdrücken, die sehr lebensecht aussahen. Erst vor wenigen Tagen stellte EngineeredArts, das britische Robotikunternehmen hinter Ameca, die neuesten Entwicklungsergebnisse des Teams vor. Im Video verfügt der Roboter Ameca über visuelle Fähigkeiten und kann den gesamten Raum und bestimmte Objekte sehen und beschreiben. Das Erstaunlichste ist, dass sie es auch kann

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

Im Bereich der industriellen Automatisierungstechnik gibt es zwei aktuelle Hotspots, die kaum zu ignorieren sind: Künstliche Intelligenz (KI) und Nvidia. Ändern Sie nicht die Bedeutung des ursprünglichen Inhalts, optimieren Sie den Inhalt, schreiben Sie den Inhalt neu, fahren Sie nicht fort: „Darüber hinaus sind beide eng miteinander verbunden, da Nvidia nicht auf seine ursprüngliche Grafikverarbeitungseinheit (GPU) beschränkt ist ) erweitert es seine GPU. Die Technologie erstreckt sich auf den Bereich der digitalen Zwillinge und ist eng mit neuen KI-Technologien verbunden. „Vor kurzem hat NVIDIA eine Zusammenarbeit mit vielen Industrieunternehmen geschlossen, darunter führende Industrieautomatisierungsunternehmen wie Aveva, Rockwell Automation und Siemens und Schneider Electric sowie Teradyne Robotics und seine Unternehmen MiR und Universal Robots. Kürzlich hat Nvidia gesammelt

Herausgeber des Machine Power Report: Wu Xin Die heimische Version des humanoiden Roboters + eines großen Modellteams hat zum ersten Mal die Betriebsaufgabe komplexer flexibler Materialien wie das Falten von Kleidung abgeschlossen. Mit der Enthüllung von Figure01, das das multimodale große Modell von OpenAI integriert, haben die damit verbundenen Fortschritte inländischer Kollegen Aufmerksamkeit erregt. Erst gestern veröffentlichte UBTECH, Chinas „größter Bestand an humanoiden Robotern“, die erste Demo des humanoiden Roboters WalkerS, der tief in das große Modell von Baidu Wenxin integriert ist und einige interessante neue Funktionen aufweist. Jetzt sieht WalkerS, gesegnet mit Baidu Wenxins großen Modellfähigkeiten, so aus. Wie Figure01 bewegt sich WalkerS nicht umher, sondern steht hinter einem Schreibtisch, um eine Reihe von Aufgaben zu erledigen. Es kann menschlichen Befehlen folgen und Kleidung falten

Diese Woche gab FigureAI, ein Robotikunternehmen, an dem OpenAI, Microsoft, Bezos und Nvidia beteiligt sind, bekannt, dass es fast 700 Millionen US-Dollar an Finanzmitteln erhalten hat und plant, im nächsten Jahr einen humanoiden Roboter zu entwickeln, der selbstständig gehen kann. Und Teslas Optimus Prime hat immer wieder gute Nachrichten erhalten. Niemand zweifelt daran, dass dieses Jahr das Jahr sein wird, in dem humanoide Roboter explodieren. SanctuaryAI, ein in Kanada ansässiges Robotikunternehmen, hat kürzlich einen neuen humanoiden Roboter auf den Markt gebracht: Phoenix. Beamte behaupten, dass es viele Aufgaben autonom und mit der gleichen Geschwindigkeit wie Menschen erledigen kann. Pheonix, der weltweit erste Roboter, der Aufgaben autonom in menschlicher Geschwindigkeit erledigen kann, kann jedes Objekt sanft greifen, bewegen und elegant auf der linken und rechten Seite platzieren. Es kann Objekte autonom identifizieren

Die folgenden 10 humanoiden Roboter prägen unsere Zukunft: 1. ASIMO: ASIMO wurde von Honda entwickelt und ist einer der bekanntesten humanoiden Roboter. Mit einer Höhe von 1,20 m und einem Gewicht von 50 kg ist ASIMO mit fortschrittlichen Sensoren und künstlichen Intelligenzfunktionen ausgestattet, die es ihm ermöglichen, sich in komplexen Umgebungen zurechtzufinden und mit Menschen zu interagieren. Aufgrund seiner Vielseitigkeit eignet sich ASIMO für eine Vielzahl von Aufgaben, von der Unterstützung von Menschen mit Behinderungen bis hin zur Durchführung von Präsentationen bei Veranstaltungen. 2. Pepper: Pepper wurde von Softbank Robotics entwickelt und möchte ein sozialer Begleiter für Menschen sein. Mit seinem ausdrucksstarken Gesicht und der Fähigkeit, Emotionen zu erkennen, kann Pepper an Gesprächen teilnehmen, im Einzelhandel helfen und sogar pädagogische Unterstützung leisten. Pfeffer

Kehr- und Wischroboter gehören in den letzten Jahren zu den beliebtesten Smart-Home-Geräten bei Verbrauchern. Die damit verbundene Bequemlichkeit der Bedienung oder sogar die Notwendigkeit einer Bedienung ermöglicht es faulen Menschen, ihre Hände frei zu haben, was es den Verbrauchern ermöglicht, sich von der täglichen Hausarbeit zu „befreien“ und mehr Zeit mit den Dingen zu verbringen, die sie in getarnter Form genießen. Aufgrund dieser Begeisterung stellen fast alle Haushaltsgerätemarken auf dem Markt ihre eigenen Kehr- und Wischroboter her, was den gesamten Markt für Kehr- und Wischroboter sehr lebendig macht. Allerdings wird die schnelle Expansion des Marktes unweigerlich eine versteckte Gefahr mit sich bringen: Viele Hersteller werden die Taktik des Maschinenmeeres nutzen, um schnell mehr Marktanteile zu erobern, was zu vielen neuen Produkten ohne Upgrade-Punkte führen wird Es handelt sich um „Matroschka“-Modelle. Keine Übertreibung. Allerdings sind das nicht alle Kehr- und Wischroboter

Roboter haben im Handumdrehen gelernt, zu zaubern? Es war zu sehen, dass es zuerst den Wasserlöffel auf dem Tisch aufhob und damit dem Publikum bewies, dass nichts darin war ... Dann nahm es den eiähnlichen Gegenstand in seine Hand und stellte den Wasserlöffel zurück auf den Tisch und begann „einen Zauber zu wirken“... …Gerade als es den Wasserlöffel wieder aufhob, geschah ein Wunder. Das ursprünglich hineingelegte Ei verschwand und das Ding, das heraussprang, verwandelte sich in einen Basketball ... Schauen wir uns noch einmal die fortlaufenden Aktionen an: △ Diese Animation zeigt eine Reihe von Aktionen mit doppelter Geschwindigkeit und läuft nur durch Zuschauen reibungslos ab Das Video kann wiederholt mit 0,5-facher Geschwindigkeit verstanden werden. Schließlich habe ich die Hinweise entdeckt: Wenn meine Handgeschwindigkeit schneller wäre, könnte ich es möglicherweise vor dem Feind verbergen. Einige Internetnutzer beklagten, dass die magischen Fähigkeiten des Roboters sogar noch höher seien als ihre eigenen: Mag war derjenige, der diese Magie für uns ausgeführt hat.
