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

सी ++ कोड एन दिनों के बाद पेड़ की ऊंचाई खोजने के लिए

मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। ए में या तो 0 या 1 तत्व हैं। एक पेड़ है। लगातार n दिनों में, यदि A[i] 0 है, तो इसे सींचा नहीं जाता है, यदि यह 1 है तो इसे सींचा जाता है, फूल निम्नलिखित तरीके से बढ़ता है -

  • यदि पेड़ को लगातार दो दिनों तक पानी नहीं दिया जाता है, तो वह मर जाता है

  • यदि पेड़ को सातवें दिन पानी पिलाया जाए, तो वह 1 सेमी बढ़ता है

  • यदि पेड़ को लगातार सातवें और (i+1)वें दिन पानी पिलाया जाता है, तो यह 1 सेमी के बजाय 5 सेमी बढ़ता है।

  • अगर इसे सातवें दिन पानी नहीं दिया गया, तो यह नहीं बढ़ेगा।

शुरुआत में, पेड़ 1 सेमी लंबा होता है। हमें n दिनों के बाद पेड़ की ऊंचाई ज्ञात करनी है। अगर यह मर जाता है, तो -1 लौटें।

तो, अगर इनपुट ए =[0, 1, 1] की तरह है, तो आउटपुट 7 होगा, क्योंकि पहले दिन, यह नहीं बढ़ेगा, इसलिए ऊंचाई 1 है, दूसरे दिन के बाद ऊंचाई 2 होगी, फिर तीसरे दिन के बाद यह 2 + 5 =7. हो जाएगा।

कदम

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

r := 1
y := 0
n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   x := A[i]
   if r is same as -1, then:
      Ignore following part, skip to the next iteration
   if x is non-zero and y is non-zero, then:
      r := r + 5
   otherwise when x is non-zero, then:
      (increase r by 1)
   otherwise when not x is non-zero and not y is non-zero and i > 0, then:
      r := -1
   y := x
return r

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
   int r = 1;
   int y = 0;
   int n = A.size();
   for (int i = 0; i < n; ++i){
      int x = A[i];
      if (r == -1)
         continue;
      if (x && y)
         r += 5;
      else if (x)
         ++r;
      else if (!x && !y && i > 0)
         r = -1;
      y = x;
   }
   return r;
}
int main(){
   vector<int> A = { 0, 1, 1 };
   cout << solve(A) << endl;
}

इनपुट

{ 0, 1, 1 }

आउटपुट

7

  1. C++ में बाइनरी ट्री के पत्ते खोजें

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हम सभी पत्तियों को इकट्ठा करके हटा देंगे और पेड़ के खाली होने तक दोहराएंगे। तो, अगर इनपुट पसंद है तो आउटपुट [[4,5,3],[2],[1]] . होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक नक्शा sz परिभाषित करें एक 2डी सरणी रेट परिभाषित करें फ़ंक्श

  1. C++ में एक पेड़ की अधिकतम गहराई या ऊँचाई ज्ञात करने के लिए एक प्रोग्राम लिखें

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा काम किसी दिए गए पेड़ की अधिकतम गहराई या ऊंचाई का पता लगाने के लिए एक प्रोग्राम लिखना है। समस्या को समझने के लिए एक उदाहरण लेते हैं, पेड़ की ऊंचाई 3 होती है। एक पेड़ की अधिकतम ऊँचाई ज्ञात करने के लिए, हम उसके बाएँ और दाएँ उपप्रकार की ऊँचाई

  1. C++ में बॉटम लेफ्ट ट्री वैल्यू का पता लगाएं

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें उस पेड़ की अंतिम पंक्ति का सबसे बाईं ओर का मान ज्ञात करना है। तो अगर पेड़ जैसा है - तब आउटपुट 7 होगा, क्योंकि अंतिम पंक्ति [7, 4] है, और सबसे बाएं तत्व 7 है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - प्रारंभ में ans और lvl वैरिएबल को 0