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

सांप और सीढ़ी समस्या


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

सांप और सीढ़ी समस्या

इस समस्या में, हमें प्रारंभ से गंतव्य तक पहुंचने के लिए आवश्यक पासा फेंक की न्यूनतम संख्या ढूंढनी है।

इनपुट और आउटपुट

इनपुट: सांप और सीढ़ी के प्रारंभिक और अंतिम स्थान। सांप: 26 से 0, 20 से 8, 16 से 3, 18 से 6 सीढ़ी: 2 से 21, 4 से 7, 10 से 25, 19 से 28 आउटपुट: आवश्यक न्यूनतम पासा फेंक 3 है

एल्गोरिदम

minDiceThrow(move, cell)

इनपुट: सांप या सीढ़ी के लिए कूद स्थान, और कुल सेल की संख्या।
आउटपुट: अंतिम सेल तक पहुंचने के लिए आवश्यक न्यूनतम पासा फेंक की संख्या।

शुरू     प्रारंभ में सभी सेल को अनदेखा चिह्नित करें     कतार q परिभाषित करें     प्रारंभिक शीर्ष को देखा गया चिह्नित करें     प्रारंभिक शीर्ष के लिए शीर्ष संख्या := 0 और दूरी := 0     प्रारंभिक शीर्ष s को q में जोड़ें     जब तक q खाली नहीं है, करें       qVert := कतार का सामने का तत्व       v := qVert की शीर्ष संख्या       यदि v = cell -1, तो //जब यह अंतिम शीर्ष है         लूप तोड़ें       कतार से एक आइटम हटाएं       j := v + 1, से v + 6 और j < cell, j को 1 से बढ़ाकर, करें         यदि j नहीं देखा गया है, तो           newVert.dist := (qVert.dist + 1)           v को देखा गया चिह्नित करें           यदि सांप या सीढ़ी है, तो             newVert.vert := move[j] //उस स्थान पर कूदें           अन्यथा             newVert.vert := j           newVert को कतार में डालें         किया       किया     किया     qVert.dist वापस करें अंत

उदाहरण

#include<iostream> #include <queue> using namespace std; struct vertex {     int vert;     int dist;       // इस शीर्ष की स्रोत से दूरी }; int minDiceThrow(int move[], int cell) {     bool visited[cell];     for (int i = 0; i < cell; i++)       visited[i] = false;       //प्रारंभ में सभी सेल अनदेखे हैं     queue<vertex> q;     visited[0] = true;       //प्रारंभ में 0 से शुरू     vertex s = {0, 0};     q.push(s);       // 0वें शीर्ष को एनक्यू करें     vertex qVert;     while (!q.empty()) {       qVert = q.front();       int v = qVert.vert;       if (v == cell-1)       //जब v गंतव्य शीर्ष है         break;       q.pop();       for (int j=v+1; j<=(v+6) && j

आउटपुट

Min Dice throws required is 3

  1. विंडोज 10 हाई CPU और डिस्क उपयोग को ठीक करें: त्वरित, विश्वसनीय चरण विंडोज 10 हाई CPU और डिस्क उपयोग को ठीक करें: त्वरित, विश्वसनीय चरण

    उपयोगकर्ता वर्तमान में रिपोर्ट कर रहे हैं कि उनका सिस्टम 100% डिस्क उपयोग और बहुत उच्च मेमोरी उपयोग दिखाता है भले ही वे कोई मेमोरी-इंटेंसिव कार्य नहीं कर रहे हों। जबकि कई उपयोगकर्ता मानते हैं कि यह समस्या केवल कम कॉन्फिगरेशन वाले पीसी (कम सिस्टम स्पेसिफिकेशन) वाले उपयोगकर्ताओं से संबंधित है, लेकिन य

  1. RAM समस्याओं को पहचानें और हल करें: लक्षण, निदान और सुधार RAM समस्याओं को पहचानें और हल करें: लक्षण, निदान और सुधार

    यह आर्टिकल आपके कंप्यूटर के सबसे महत्वपूर्ण घटकों में से एक के बारे में जानने के लिए आवश्यक सभी जानकारी को कवर करता है जिसे रैंडम एक्सेस मेमोरी या RAM के नाम से जाना जाता है। हम ब्लॉग में निम्नलिखित विषयों को कवर करेंगे। बिना किसी देरी के, आइए शुरू करें! RAM क्या है? RAM या रैंडम एक्सेस मेमोरी किस

  1. विंडोज 10, 8.1, और 7 में 100% डिस्क उपयोग को हल करें - 5 सिद्ध सुधार विंडोज 10, 8.1, और 7 में 100% डिस्क उपयोग को हल करें - 5 सिद्ध सुधार

    यदि आप विंडोज 10 अपडेट इंस्टॉल करने के बाद विंडोज 10 को अच्छा प्रदर्शन नहीं करते हुए अनुभव करते हैं, जैसे सिस्टम स्टार्टअप पर फ्रीज होता है या एप्लिकेशन आपके क्लिक का जवाब नहीं देते। और टास्क मैनेजर पर जांच करने पर आप पा सकते हैं कि आपका सिस्टम ड्राइव 100 पर चल रहा है, जो ऑपरेटिंग सिस्टम को धीमा कर