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.