ホームページ  >  記事  >  バックエンド開発  >  グリッドにパターンが存在するかどうかを調べる C++ プログラム

グリッドにパターンが存在するかどうかを調べる C++ プログラム

PHPz
PHPz転載
2023-09-05 18:05:06817ブラウズ

グリッドにパターンが存在するかどうかを調べる C++ プログラム

n * n グリッドがあると仮定します。以下に示すように、グリッドに十字のパターンがあるかどうかを検出する必要があります。-

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

グリッドには「#」と「.」のみを含めることができます。パターンを検出し、そのパターンがいくつあるかを調べる必要があります。 グリッドのパターン。グリッドと寸法が入力として与えられます。

問題カテゴリ

プログラミングにおけるさまざまな問題は、さまざまな手法で解決できます。問題を解決するには、まずアルゴリズムを設計し、特定の問題を詳細に研究する必要があります。同じ問題が繰り返し発生する場合は、再帰的手法を使用することも、反復構造を使用することもできます。 if-else や switch case などの制御ステートメントを使用して、プログラムの論理フローを制御できます。変数とデータ構造を効果的に使用すると、よりシンプルなソリューションと、軽量でメモリ要件の低いプログラムが提供されます。私たちは、分割統治、貪欲プログラミング、動的プログラミングなどの既存のプログラミング手法を研究し、それらが使用できるかどうかを確認する必要があります。この問題は、いくつかの基本的なロジックまたは強引な方法で解決できます。この方法をよりよく理解するには、以下に従ってください。

したがって、問題の入力が n = 5 でグリッドが

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

の場合、出力は 1 になります。

手順

この問題を解決するには、次の手順に従います。

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)

Example

理解を深めるために、以下の実装を見てみましょう -

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

入力

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

出力

1

以上がグリッドにパターンが存在するかどうかを調べる C++ プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。