Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में भूलभुलैया से बाहर निकलने की संभावना

इस समस्या में, हमें n पूर्णांकों का एक चक्रव्यूह दिया जाता है, प्रत्येक पूर्णांक किए जाने वाले चालों की संख्या को इंगित करता है। दिशा के साथ-साथ '>' और '<' का प्रयोग करते हुए दर्शाया गया है। हमारा काम यह पता लगाना है कि क्या भूलभुलैया से बाहर निकलना संभव है या नहीं, अगर शुरुआती बिंदु 0 इंडेक्स पर स्थित है।

आइए समस्या को समझने के लिए एक उदाहरण लेते हैं

इनपुट -

3
2 1 1 4
> < > >

आउटपुट - हाँ

स्पष्टीकरण - शुरुआत से आगे बढ़ते हुए, हम 2 पोजीशन आगे बढ़ेंगे, फिर 1 पोजीशन आगे, फिर 4 पोजीशन आगे। यह हमारे चक्रव्यूह को हिला देगा।

इस समस्या को हल करने के लिए, हम जांच करेंगे कि क्या भूलभुलैया से बाहर निकलना संभव है या नहीं। इसके लिए या तो हमें 0 से नीचे या n से ऊपर जाना होगा। 0 से शुरू करते हुए, हम दिए गए पूर्णांक स्थानों द्वारा संकेत के आधार पर दिशा को संसाधित करेंगे। और जांचें कि क्या अंत आ गया है।

एक और स्थिति जो उत्पन्न हो सकती है वह एक अनंत लूप है, यानी वह स्थिति जब उपयोगकर्ता कभी भी भूलभुलैया से बाहर नहीं निकलता है, यह तब होता है जब हम एक विज़िटिंग स्थिति में वापस आते हैं। इसलिए, इस स्थिति की जांच करने के लिए हम सभी देखी गई जगहों को चिह्नित करेंगे।

उदाहरण

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम

#include <iostream>
using namespace std;
void isMazeSolvable (int a[], int n, string s){
   int mark[n] = {0};
   int start = 0;
   int possible = 1;
   while (start >= 0 && start < n){
      if (s == "<"){
         if (mark[start] == 0){
            mark[start] = 1;
            start -= a[start];
         } else {
            possible = 0;
            break;
         }
      } else {
         if (mark[start] == 0){
            mark[start] = 1;
            start += a[start];
         } else {
            possible = 0;
            break;
         }
      }
   }
   if (possible == 0)
      cout << "It stays inside the maze forever";
   else
      cout << "It will come out of the maze";
}
int main (){
   int n = 3;
   string s = ">><";
   int a[] = { 1, 2, 4 };
   isMazeSolvable (a, n, s);
}

आउटपुट

It will come out of the maze

  1. C++ . में भूलभुलैया II

    मान लीजिए कि एक भूलभुलैया में खाली जगह और दीवारों के साथ एक गेंद है। अब गेंद ऊपर, नीचे, बाएँ या दाएँ किसी भी दिशा में लुढ़क कर खाली रास्तों से जा सकती है, लेकिन दीवार से टकराने तक यह लुढ़कना बंद नहीं करेगी। जब गेंद रुकती है, तो वह अगली दिशा चुन सकती है। हमें गेंद, गंतव्य और भूलभुलैया की स्थिति शुरू

  1. सी ++ में भूलभुलैया

    मान लीजिए कि एक भूलभुलैया में खाली जगह और दीवारों के साथ एक गेंद है। अब गेंद ऊपर, नीचे, बाएँ या दाएँ किसी भी दिशा में लुढ़क कर खाली रास्तों से जा सकती है, लेकिन दीवार से टकराने तक यह लुढ़कना बंद नहीं करेगी। जब गेंद रुकती है, तो वह अगली दिशा चुन सकती है। हमें गेंद की स्थिति, गंतव्य और भूलभुलैया शुरू

  1. C++ . में भूलभुलैया III

    मान लीजिए कि खाली जगह और दीवारों के साथ एक भूलभुलैया है और उस भूलभुलैया में एक गेंद भी है। गेंद ऊपर (यू), नीचे (डी), बाएं (एल) या दाएं (आर) दिशाओं को लुढ़क कर खाली जगहों से जा सकती है, लेकिन यह दीवार से टकराने तक लुढ़कती रहती है। जब गेंद रुकती है, तो वह अगली दिशा चुन सकती है। उस भूलभुलैया में एक छेद