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.