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

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

PHPz
PHPznach vorne
2023-09-05 18:05:06814Durchsuche

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 −

#...#
.#.#.
..#..
.#.#.
#...#

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

#...#
.#.#.
..#..
.#.#.
#...#,

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)

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;
}

Eingabe

5, {"#...#", ".#.#.", "..#..", ".#.#.", "#...#"}

Ausgabe

1

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen