मान लीजिए, हमें एक ग्रिड दिया गया है जिसमें 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.