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

एस्केप द घोस्ट इन सी++

मान लीजिए हम एक सरलीकृत Pacman खेल खेल रहे हैं। अब हम बिंदु (0, 0) से शुरू करते हैं, और हमारा गंतव्य है (लक्ष्य [0], लक्ष्य [1])। मानचित्र पर कई भूत हैं, यहाँ i-th भूत शुरू होता है (भूत [i] [0], भूत [i] [1])। प्रत्येक मोड़ में, हम और सभी भूत एक साथ (मई) 4 मुख्य दिशाओं में से एक में चलते हैं - उत्तर, पूर्व, पश्चिम, या दक्षिण, अंतिम बिंदु से एक नए बिंदु 1 इकाई की दूरी पर जाते हुए। हम बच सकते हैं अगर और केवल अगर हम किसी भूत के पहुंचने से पहले लक्ष्य तक पहुंच सकते हैं (किसी भी चाल के लिए भूत ले सकते हैं।) यदि हम भूत के रूप में एक ही समय में किसी भी वर्ग (लक्ष्य सहित) तक पहुंचते हैं, तो ऐसा नहीं होता है पलायन के रूप में गिनें। इसलिए जब बचना संभव हो तो हमें ट्रू वापस लौटना होगा।

तो अगर इनपुट [[1,0], [0,3]] जैसा है, और लक्ष्य [0,1] है, तो परिणाम सही होगा। ऐसा इसलिए है क्योंकि हम 1 समय पर सीधे गंतव्य (0, 1) तक पहुंच सकते हैं, जबकि (1, 0) या (0, 3) पर स्थित भूतों के पास हमें पकड़ने का कोई रास्ता नहीं है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • मुझे :=|target[1]| + |target[0]|
  • x :=0
  • i के लिए 0 से लेकर घोस्ट ऐरे के आकार तक - 1
    • x :=|भूत [i,0] - लक्ष्य[0]| + |भूत [i, 1] – लक्ष्य[1]|
    • अगर x <=मैं, तो झूठी वापसी
  • सही लौटें

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool escapeGhosts(vector<vector<int>>& ghosts, vector<int>& target) {
      int me = abs(target[1]) + abs(target[0]);
      int x = 0;
      for(int i = 0; i < ghosts.size(); i++){
         x = abs(ghosts[i][0] - target[0]) + abs(ghosts[i][1] - target[1]);
         if(x <= me) return false;
      }
      return true;
   }
};
main(){
   vector<vector<int>> v1 = {{1,0}, {0,3}};
   vector<int> v2 = {0,1};
   Solution ob;
   cout << (ob.escapeGhosts(v1, v2));
}

इनपुट

[[1,0],[0,3]]
[0,1]

आउटपुट

1

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

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

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

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

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

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