ধরুন, আমাদের একটি গ্রিড দেওয়া হয়েছে যাতে 2টি সারি এবং n কলাম রয়েছে। একটি রোবট গ্রিডে (0, 0) অবস্থানে আছে এবং তার বর্তমান অবস্থানে সংলগ্ন এবং কোণার কক্ষগুলি পরিদর্শন করে (1, n - 1) দেখতে চায়। আমাদেরকে স্ট্রিংগুলির একটি অ্যারেতে গ্রিড দেওয়া হয়, একটি সেল ব্লক করা হয় যদি এটি '#' চিহ্নিত করা হয় এবং এটি '.' চিহ্নিত করা হয় তবে এটি অ্যাক্সেসযোগ্য। রোবট সেল (0, 0) থেকে সেল (1, n - 1) পরিদর্শন করতে পারে কিনা তা আমাদের খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট হয় n =4, গ্রিড ={".##.", "...."}, তাহলে আউটপুট সম্ভব হবে৷
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
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.