Heim > Backend-Entwicklung > C++ > C++-Programm, um herauszufinden, ob ein Muster im Raster vorhanden ist

C++-Programm, um herauszufinden, ob ein Muster im Raster vorhanden ist

PHPz
Freigeben: 2023-09-05 18:05:06
nach vorne
855 Leute haben es durchsucht

C++-Programm, um herauszufinden, ob ein Muster im Raster vorhanden ist

Angenommen, wir haben ein n*n-Gitter. Wir müssen erkennen, ob das Raster ein kreuzförmiges Muster enthält, wie unten gezeigt −

#...#
.#.#.
..#..
.#.#.
#...#
Nach dem Login kopieren

Das Raster darf nur „#“ und „.“ enthalten. Wir müssen das Muster erkennen und herausfinden, wie viele davon vorhanden sind Muster im Gitter. Das Raster und die Abmessungen werden uns als Eingabe übergeben.

Problemkategorien

Verschiedene Probleme in der Programmierung können durch unterschiedliche Techniken gelöst werden. Um ein Problem zu lösen, müssen wir zunächst einen Algorithmus entwerfen und das spezifische Problem im Detail untersuchen. Wenn das gleiche Problem wiederholt auftritt, können rekursive Methoden verwendet werden; alternativ können wir auch iterative Strukturen verwenden. Steueranweisungen wie if-else und switch case können zur Steuerung des logischen Ablaufs des Programms verwendet werden. Die effektive Nutzung von Variablen und Datenstrukturen kann eine einfachere Lösung und ein schlankes Programm mit geringem Speicherbedarf bieten. Wir müssen bestehende Programmiertechniken wie „Teile und herrsche“, „Greedy Programming“ und „Dynamic Programming“ untersuchen und herausfinden, ob sie verwendet werden können. Dieses Problem kann mit einigen grundlegenden Logik- oder Brute-Force-Methoden gelöst werden. Bitte befolgen Sie die nachstehenden Schritte, um diese Methode besser zu verstehen.

Wenn also unsere Problemeingabe n = 5 ist und das Gitter

#...#
.#.#.
..#..
.#.#.
#...#,
Nach dem Login kopieren

ist, dann ist die Ausgabe 1.

Schritte

Um dieses Problem zu lösen, folgen wir den folgenden Schritten:

count := 0
for initialize i := 1, when i < n - 1, update (increase i by 1), do:
   for initialize j := 1, when j < n - 1, update (increase j by 1), do:
      if grid[i, j] is same as &#39;#&#39; and grid[i - 1, j - 1] is same as &#39;#&#39; and grid[i - 1, j + 1] is same as &#39;#&#39; and grid[i + 1, j - 1] is same as &#39;#&#39; and grid[i + 1, j + 1] is same as &#39;#&#39;, then:
         (increase count by 1)
print(count)
Nach dem Login kopieren

Beispiel

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

#include<bits/stdc++.h>
using namespace std;
void solve(int n, vector<string> grid) {
   int count = 0;
   for(int i = 1; i < n - 1; i++){
      for(int j = 1; j < n - 1; j++){
         if(grid[i][j] == &#39;#&#39; && grid[i - 1][j - 1] == &#39;#&#39; && grid[i - 1][j + 1] == &#39;#&#39; && grid[i + 1][j - 1] == &#39;#&#39; && grid[i + 1][j + 1] == &#39;#&#39;)
            count++;
      }
   }
   cout<< count;
}
int main() {
   int n = 5;
   vector<string> grid = {"#...#", ".#.#.", "..#..", ".#.#.", "#...#"};
   solve(n, grid);
   return 0;
}
Nach dem Login kopieren

Eingabe

5, {"#...#", ".#.#.", "..#..", ".#.#.", "#...#"}
Nach dem Login kopieren

Ausgabe

1
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonC++-Programm, um herauszufinden, ob ein Muster im Raster vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage