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

C++ . में सेल्फ क्रॉसिंग


मान लीजिए कि हमारे पास n संख्याओं की एक सरणी x है। हम बिंदु (0,0) से शुरू करते हैं और x[0] इकाइयों को उत्तर दिशा में ले जाते हैं, फिर x[1] इकाइयों को पश्चिम दिशा में, x[2] इकाइयों को दक्षिण दिशा में, x[3] इकाइयों को पूर्व की ओर ले जाते हैं। दिशा और इतने पर। दूसरे शब्दों में, प्रत्येक चाल के बाद हमारी दिशा वामावर्त बदल जाती है। हमें यह निर्धारित करने के लिए कि हमारा पथ स्वयं को पार करता है या नहीं, हमें O(1) अतिरिक्त स्थान के साथ एक-पास एल्गोरिथ्म तैयार करना होगा।

तो अगर सरणी की तरह है - [3,4,2,5]

C++ . में सेल्फ क्रॉसिंग

उत्तर सत्य होगा।

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

  • x के सूचकांक 4 में 0 डालें

  • n :=x का आकार, i :=4

  • जब i x[i - 2] कुछ भी प्रारंभ न करने के लिए, i को 1 से बढ़ाएँ -

    • कुछ न करें

  • अगर मैं n के समान हूं, तो झूठी वापसी करें

  • अगर x[i]>=x[i - 2] - x[i - 4], तो,

    • x[i - 1] =x[i - 1] - x[i - 3]

  • i को 1 से बढ़ाने के लिए, जब i

    • कुछ न करें

  • जब मैं n के समान न हो तो सही लौटें

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool isSelfCrossing(vector<int>& x) {
      x.insert(x.begin(), 4, 0);
      int n = x.size();
      int i = 4;
      for(; i < n && x[i] > x[ i - 2];i++);
      if(i == n) return false;
      if (x[i] >= x[i - 2] - x[i - 4]){
         x[i - 1] -= x[i - 3];
      }
      for (i++; i < n && x[i] < x[i - 2]; i++);
      return i != n;
   }
};
main(){
   Solution ob;
   vector<int> v = {3,4,2,5};
   cout << (ob.isSelfCrossing(v));
}

इनपुट

{3,4,2,5}

आउटपुट

1

  1. Linux पर C++ का सबसे अच्छा IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। Linux पर C++ के लिए एक भी सर्वश्रेष्ठ IDE नही

  1. Linux पर c++ के लिए शीर्ष IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। यहाँ Linux के लिए सर्वश्रेष्ठ C/C++ IDE की सू

  1. विंडो पर c++ के लिए शीर्ष IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। यहां विंडो के लिए सर्वश्रेष्ठ C/C++ IDE की सू