C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

グリッドが完全にアクセス可能かどうかを確認するためのC++コード


2行n列のグリッドが与えられたとします。ロボットはグリッド内の位置(0、0)にあり、現在の場所に隣接するコーナーセルにアクセスして(1、n-1)にアクセスしたいと考えています。文字列の配列でグリッドが与えられ、セルが「#」とマークされている場合はブロックされ、「。」とマークされている場合はアクセス可能です。ロボットがセル(0、0)からセル(1、n-1)にアクセスできるかどうかを確認する必要があります。

したがって、入力がn =4、grid ={"。##。"、 "...."}の場合、出力は可能になります。

ステップ

これを解決するには、次の手順に従います-

flag := 1
for initialize i := 0, when i < n, update (increase i by 1), do:
   if grid[0, i] is same as '#' and grid[1, i] is same as '#',
then:
   flag := 0
if flag is same as 0, then:
   print("Not Possible.")
Otherwise
   print("Possible.")

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

#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int n, string grid[]) {
   int flag = 1;
   for(int i = 0; i < n; i++){
      if(grid[0].at(i) == '#' && grid[1].at(i) == '#'){
         flag = 0;
      }
   }
   if (flag == 0)
      cout<<"Not Possible.";
   else
      cout<<"Possible.";
}
int main() {
   int n = 4;
   string grid[] = {".##.", "...."};
   solve(n, grid);
   return 0;
}

入力

4, {".##.", "...."}

出力

Possible.

  1. グリッド内の照らされたセルの数を見つけるためのC++プログラム

    次元h*wのグリッドが与えられていると仮定します。グリッド内のセルには、球根または障害物のいずれかを含めることができます。電球のセルはそれ自体とその右、左、上、下のセルを照らし、障害物のセルが光を遮らない限り、光はセルを通して輝くことができます。障害物セルは照明できず、電球セルからの光が他のセルに到達するのを防ぎます。したがって、配列「bulb」内のグリッド内の電球セルの位置と配列「obstacles」内の障害物セルの位置を考えると、照らされているグリッド内のセルの総数を見つける必要があります。 したがって、入力がh =4、w =4、bulb ={{1、1}、{2、2}、{3、3}}、障害物

  2. パスを作成するためにグリッドでブロックするセルの数を見つけるためのC++プログラム

    次元h*wのグリッドがあるとします。セル位置(0、0)にロボットがあり、その位置(h-1、w-1)に移動する必要があります。グリッドには、ブロックされたセルとブロックされていないセルの2種類のセルがあります。ロボットはブロックされていないセルを通過できますが、ブロックされたセルを通過することはできません。ロボットは4つの方向に進むことができます。左、右、上、下に移動できます。ただし、ロボットはセルから別のセルに任意の方向に移動する可能性があるため(前のセルを無視して)、1つのパスのみを作成し、そのパスにない他のすべてのセルをブロックする必要があります。 (0、0)から(h -1、w -1)まで