ধরুন, আমাদের একটি গ্রিড দেওয়া হয়েছে যাতে 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.