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

C++ में फूल लगा सकते हैं

मान लीजिए कि हमारे पास एक लंबी फूल की क्यारी है जिसमें कुछ भूखंड लगाए गए हैं और कुछ खाली हैं। अब एक विवशता है, आसन्न भूखंडों में फूल नहीं लगाए जा सकते, वे पानी के लिए प्रतिस्पर्धा करेंगे और दोनों मर जाएंगे। इसलिए यदि हमारे पास एक फूल की क्यारी है, जिसमें 0 और 1, 0 वाली एक सरणी खाली है और 1 भरने को इंगित करता है, और एक संख्या n भी दी गई है, तो हमें यह जांचना होगा कि क्या इसमें n नए फूल लगाए जा सकते हैं, बिना किसी उल्लंघन के। आसन्न-फूल नियम या नहीं।

इसलिए, अगर इनपुट फ्लावरबेड =[1,0,0,0,1], n =1 जैसा है, तो आउटपुट ट्रू होगा

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

  • यदि फूलों की क्यारियों का आकार

    • झूठी वापसी

  • यदि फूलों की क्यारी का आकार 1 के समान है और फूलों की क्यारी [0] 0 के समान है और n 1 के समान है, तो -

    • सही लौटें

  • इनिशियलाइज़ i :=0 के लिए, जब i <फ्लावरबेड का आकार, अपडेट (i 1 से बढ़ाएँ), करें -

    • यदि n> 0, तो -

      • अगर मैं 0 के समान हूं, तो -

        • अगर फ्लावरबेड [i] 0 के समान है और फ्लावरबेड [1] 0 के समान है, तो -

          • फूलों का बिस्तर[0] :=1

          • (n से 1 घटाएं)

      • अन्यथा जब मैं फूलों की क्यारियाँ-1 के आकार के समान हो, तो -

        • अगर फ्लावरबेड[i] 0 के समान है और फ्लावरबेड[i - 1] 1 के बराबर नहीं है, तो -

          • फूलों का बिस्तर[i] :=1

          • (n से 1 घटाएं)

      • अन्यथा जब फ्लावरबेड [i] 0 के समान है और फ्लावरबेड [i + 1] 0 के समान है और फ्लावरबेड [i - 1] 0 के समान है, तो -

        • फूलों का बिस्तर[i] :=1

        • (n से 1 घटाएं)

    • यदि n, 0 के समान है, तो -

      • सही लौटें

  • यदि n, 0 के समान है, तो -

    • सही लौटें

  • झूठी वापसी

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool canPlaceFlowers(vector<int>& flowerbed, int n) {
      if (flowerbed.size() < n)
         return false;
      if (flowerbed.size() == 1 && flowerbed[0] == 0 && n == 1)
         return true;
      for (int i = 0; i < flowerbed.size(); i++) {
         if (n > 0) {
            if (i == 0) {
               if (flowerbed[i] == 0 && flowerbed[1] == 0) {
                  flowerbed[0] = 1;
                  n--;
               }
            }
            else if (i == flowerbed.size() - 1) {
               if (flowerbed[i] == 0 && flowerbed[i - 1] != 1) {
                  flowerbed[i] = 1;
                  n--;
               }
            }
            else if (flowerbed[i] == 0 && flowerbed[i + 1] == 0 && flowerbed[i - 1] == 0) {
flowerbed[i] = 1;
               n--;
            }
         }
         if (n == 0) {
            return true;
         }
      }
      if (n == 0) {
         return true;
      }
      return false;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,0,0,0,1};
   cout << (ob.canPlaceFlowers(v, 1));
}

इनपुट

{1,0,0,0,1}, 1

आउटपुट

1

  1. मैं सी ++ का उपयोग कर कंसोल कैसे साफ़ कर सकता हूं?

    हम C++ कोड का उपयोग करके कंसोल को साफ़ कर सकते हैं। ऐसा करने के लिए हमें कुछ सिस्टम कमांड निष्पादित करने होंगे। Linux सिस्टम में, POSIX का उपयोग किया जाता है। सिस्टम कमांड को निष्पादित करने के लिए हम सिस्टम () फ़ंक्शन को कॉल कर सकते हैं। लिनक्स में कंसोल को साफ करने के लिए, हम क्लियर कमांड का उपयोग

  1. क्या मुख्य कार्य स्वयं को सी ++ में कॉल कर सकता है?

    मुख्य() फ़ंक्शन स्वयं को C++ में कॉल कर सकता है। यह रिकर्सन का एक उदाहरण है क्योंकि इसका मतलब है कि एक फ़ंक्शन स्वयं को कॉल कर रहा है। इसे प्रदर्शित करने वाला एक कार्यक्रम इस प्रकार दिया गया है। उदाहरण #include<iostream> using namespace std; int main() {    static int x = 1;   &

  1. क्या C++ वेरिएबल स्थिर और अस्थिर दोनों हो सकता है?

    हां एक C++ चर स्थिर और अस्थिर दोनों हो। इसका उपयोग केवल-पढ़ने के लिए हार्डवेयर रजिस्टर, या किसी अन्य थ्रेड के आउटपुट जैसी स्थितियों में किया जाता है। वोलेटाइल का मतलब है कि इसे मौजूदा थ्रेड के बाहरी किसी चीज़ से बदला जा सकता है और कॉन्स्ट का मतलब है कि आप इसे नहीं लिखते हैं (उस प्रोग्राम में जो कॉन्