Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tìm hiểu xem lưới có hoàn toàn có thể truy cập được hay không

Giả sử, chúng ta được cung cấp một lưới có 2 hàng và n cột. Robot đang ở vị trí (0, 0) trong lưới và muốn truy cập (1, n - 1) bằng cách truy cập các ô liền kề và ở góc với vị trí hiện tại của nó. Chúng ta được cung cấp lưới trong một mảng chuỗi, một ô bị chặn nếu nó được đánh dấu '#' và nó có thể truy cập được nếu nó được đánh dấu '.'. Chúng tôi phải tìm hiểu xem liệu rô bốt có thể truy cập ô (1, n - 1) từ ô (0, 0) hay không.

Vì vậy, nếu đầu vào là n =4, grid ={". ##.", "...."}, thì đầu ra sẽ là Có thể.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

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.")

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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

Đầu vào

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

Đầu ra

Possible.