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

C++ कोड: n दिनों के बाद पेड़ की ऊंचाई खोजें


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

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

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

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

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

शुरुआत में, पेड़ 1 सेमी लंबा है। हमें n दिनों के बाद पेड़ की ऊंचाई ढूंढनी है। यदि यह मर जाता है, तो -1 वापस करें।

उदाहरण के लिए, यदि इनपुट A = [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  using namespace std; int solve(vector 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 A = { 0, 1, 1 };     cout << solve(A) << endl; }

इनपुट

{ 0, 1, 1 }

आउटपुट

7

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

    समस्या विवरण मान लीजिए हमारे पास एक बाइनरी ट्री है। हम सभी पत्तियों को संग्रहित और हटाएंगे और तब तक दोहराएंगे जब तक ट्री खाली न हो जाए। उदाहरण के लिए, यदि इनपुट इस तरह का ट्री है: तो आउटपुट [[4,5,3],[2],[1]] होगा। समाधान दृष्टिकोण DFS का उपयोग करके प्रत्येक नोड की ऊंचाई (पत्तियों से दूरी) की गणन

  1. C++ में ट्री की अधिकतम गहराई या ऊंचाई खोजने का प्रोग्राम C++ में ट्री की अधिकतम गहराई या ऊंचाई खोजने का प्रोग्राम

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

  1. C++ में बाइनरी ट्री का बॉटम लेफ्ट मान C++ में बाइनरी ट्री का बॉटम लेफ्ट मान

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें ट्री की अंतिम पंक्ति (सबसे गहरे लेवल) का सबसे बायाँ मान ढूंढना है। उदाहरण: ट्री [3,5,1,6,2,0,8,null,null,7,4] के लिए अंतिम पंक्ति [7,4] है, इसलिए बॉटम लेफ्ट मान 7 है। DFS + गहराई ट्रैकिंग दो वेरिएबल्स ans और maxLevel (प्रारंभ में -1) रखें। रिकर्सिव sol