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

C++ में सबसे अधिक पानी वाला कंटेनर


हमें कंटेनर की दीवारों की ऊंचाई की एक सरणी दी गई है। लक्ष्य वह कंटेनर ढूंढना है जो पानी की अधिकतम मात्रा धारण कर सके। चूंकि दीवारों की ऊंचाई सरणी के तत्व हैं, उनके बीच की दूरी को दो दीवारों के बीच की चौड़ाई माना जाता है। उदाहरण के लिए ऊंचाई Arr[i] और Arr[j] की दीवारों के बीच j-i चौड़ाई होती है (0<=i

इसलिए पानी की ऊंचाई कम ऊंचाई तक होगी, यदि Arr[i] < Arr[j] तो पानी की ऊंचाई Arr[i] होगी। चौड़ाई j-i है इसलिए पानी का क्षेत्रफल = Arr[i] * (j - i)।

हमें ऐसा अधिकतम क्षेत्रफल ढूंढना है।

इनपुट

Arr[]= { 5,1,2,3,5 }

आउटपुट

अधिकतम पानी का क्षेत्रफल: 20

व्याख्या

C++ में सबसे अधिक पानी वाला कंटेनर

चित्र में दिखाए अनुसार, दीवारों की ऊंचाई 5,1,2,3 और दीवारों के बीच अधिकतम चौड़ाई है

Arr[0] और Arr[4] चौड़ाई=4, क्षेत्रफल = Arr[0]<=Arr[4] → 5*4=20 Arr[1] और Arr[4] चौड़ाई=3, क्षेत्रफल = Arr[1]<=Arr[4] → 1*4=4 Arr[2] और Arr[0] या Arr[4] चौड़ाई=4, क्षेत्रफल = Arr[0]<=Arr[0] → 2*2=4 Arr[3] और Arr[0] चौड़ाई=3, क्षेत्रफल = Arr[0]<=Arr[0] → 3*3=9 Arr[4] और Arr[0] चौड़ाई=4, क्षेत्रफल = Arr[0]<=Arr[4] → 5*4=20

अधिकतम क्षेत्रफल वाला कंटेनर अधिकतम पानी धारण करेगा, क्षेत्रफल=20, दीवारें Arr[0] और Arr[4]

इनपुट

Arr[]= { 1, 5, 4, 3, 2, 4 }

आउटपुट

अधिकतम पानी का क्षेत्रफल: 16

व्याख्या

Arr[0] और Arr[5] चौड़ाई=5, क्षेत्रफल = Arr[0]<=Arr[5] → 1*5=5 Arr[1] और Arr[5] चौड़ाई=4, क्षेत्रफल = Arr[1]<=Arr[5] → 4*4=16 Arr[2] और Arr[5] चौड़ाई=3, क्षेत्रफल = Arr[2]<=Arr[5] → 3*4=12 Arr[3] और Arr[1] चौड़ाई=2, क्षेत्रफल = Arr[3]<=Arr[1] → 3*2=6 Arr[4] और Arr[1] चौड़ाई=3, क्षेत्रफल = Arr[1]<=Arr[4] → 2*3=6 Arr[5] और Arr[1] चौड़ाई=4, क्षेत्रफल = Arr[1]<=Arr[4] → 4*4=16

अधिकतम क्षेत्रफल वाला कंटेनर अधिकतम पानी धारण करेगा, क्षेत्रफल=16, दीवारें Arr[0] और Arr[4]

प्रयुक्त दृष्टिकोण

  • पूर्णांक सरणी walls[] दीवारों की ऊंचाई संग्रहीत करती है।
  • फ़ंक्शन mostwater(int A[], int len) ऊंचाई की सरणी और उसमें तत्वों की संख्या लेता है और केवल ऊंचाई और चौड़ाई उपलब्ध होने पर सबसे अधिक पानी वाले कंटेनर का क्षेत्रफल लौटाता है।
  • हम दो इंडेक्स r=len-1 और l=0 लेते हैं ताकि सरणी को दोनों छोरों से पार करना शुरू कर सकें।
  • पूर्णांक area और maxarea का उपयोग वर्तमान कंटेनर के क्षेत्रफल और अब तक मिले अधिकतम कंटेनर क्षेत्रफल को संग्रहीत करने के लिए किया जाता है। प्रारंभ में 0।
  • int minwall,lwall,rwall बाएं दीवार की ऊंचाई (A[l]), दाएं दीवार की ऊंचाई (A[r]), और lwall और rwall की न्यूनतम ऊंचाई संग्रहीत करते हैं।
  • जब तक (l < r) सरणी को पार करें और प्रत्येक A[l] और A[r] के लिए, पानी की ऊंचाई दोनों में से न्यूनतम होगी। जो भी न्यूनतम है उसे minwall में संग्रहीत करें।
  • दो दीवारों के बीच की चौड़ाई इंडेक्स का अंतर है (r-l)।
  • पानी/कंटेनर के क्षेत्रफल की गणना minwall * (r-l) के रूप में करें और area अपडेट करें।
  • सभी दीवारों के लिए ऐसा करें, यदि वर्तमान क्षेत्रफल अब तक अधिकतम है तो maxarea अपडेट करें।
  • अंत में maxarea में सबसे अधिक पानी वाले कंटेनर का वांछित क्षेत्रफल होगा।
  • परिणाम के रूप में maxarea लौटाएं।

उदाहरण कोड

#include<iostream> using namespace std; int mostwater(int A[], int len){ int r=len-1; //कंटेनर की दाएं दीवार का इंडेक्स int l=0; //कंटेनर की बाएं दीवार का इंडेक्स int area=0,maxarea=0; int minwall,lwall,rwall; while (l < r){ // अधिकतम क्षेत्रफल की गणना lwall = A[l]; //कंटेनर की बाएं दीवार की ऊंचाई rwall =A[r]; //कंटेनर की दाएं दीवार की ऊंचाई minwall=lwall<=rwall?lwall:rwall; //दोनों दीवारों में से न्यूनतम पानी की ऊंचाई है area=minwall*(r-l); // क्षेत्रफल न्यूनतम दीवार * चौड़ाई (r-l) maxarea=area>=maxarea?area:maxarea; if (l < r) l += 1; else r -= 1; } return maxarea; } int main(){ int walls[] = {1, 5, 4, 3, 2, 4}; int num = sizeof(walls) / sizeof(walls[0]); cout << endl <<"सबसे अधिक पानी वाले कंटेनर का क्षेत्रफल:"<< mostwater(walls,num); }

आउटपुट

सबसे अधिक पानी वाले कंटेनर का क्षेत्रफल: 16

  1. C++ में दी गई भुजा लंबाई वाले n-भुजा नियमित बहुभुज का क्षेत्रफल C++ में दी गई भुजा लंबाई वाले n-भुजा नियमित बहुभुज का क्षेत्रफल

    इस समस्या में दी गई भुजा के साथ n-भुजा नियमित बहुभुज का क्षेत्रफल ज्ञात करने के लिए, हम आकृति के क्षेत्रफल का सूत्र व्युत्पन्न करेंगे और उस पर आधारित एक प्रोग्राम बनाएंगे। लेकिन उससे पहले आइए मूल बातें दोहराते हैं ताकि विषय को आसानी से समझा जा सके। n-भुजा नियमित बहुभुज n भुजाओं वाला एक बहुभुज है जिस

  1. C++ में दी गई भुजाओं वाले किसी भी त्रिभुज के परिक्षेपित वृत्त का क्षेत्रफल C++ में दी गई भुजाओं वाले किसी भी त्रिभुज के परिक्षेपित वृत्त का क्षेत्रफल

    यहां हम देखेंगे कि किसी भी त्रिभुज के परिक्षेपित वृत्त (circumcircle) का क्षेत्रफल कैसे प्राप्त करें जिसकी भुजाएं दी गई हैं। यहां भुजा AB a है, BC b है और CA c है, त्रिज्या r है। त्रिज्या r निम्न के समान है - उदाहरण #include <iostream> #include <cmath> using namespace std; float area(f

  1. पायथन में सबसे अधिक पानी वाला कंटेनर पायथन में सबसे अधिक पानी वाला कंटेनर

    मान लीजिए हमारे पास n गैर-ऋणात्मक पूर्णांकों a1, a2, ..., an का एक समूह है, प्रत्येक मान निर्देशांक (i, a[i]) पर एक बिंदु दर्शाता है। n ऊर्ध्वाधर रेखाएं इस तरह मौजूद हैं कि रेखा i के दो एंडपॉइंट (i, a[i]) और (i, a[0]) पर हैं। हमें दो रेखाएं ढूंढनी हैं, जो x-अक्ष के साथ मिलकर एक कंटेनर बनाती हैं, इसल