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

एक हिस्टोग्राम में सबसे बड़ा आयताकार क्षेत्र खोजने के लिए सी ++ कार्यक्रम

यह एक हिस्टोग्राम में सबसे बड़ा आयताकार क्षेत्र खोजने के लिए एक C++ प्रोग्राम है

एल्गोरिदम फ़ंक्शन getArea():

Begin
   Create an empty stack.
   Initialize the largest_area.
   Do a while loop start from first bar for every bar hist[i], where i = 0 to
      less than n:
   If stack is empty or hist[i] is higher than the bar at top of stack, then
      push ‘i’ to stack.
   Else
      this bar is smaller than the top of stack, then keep removing the
      top of stack while top of the stack is greater. Calculate area of
      rectangle with smallest bar. Element before top in stack is left
      index and i is right index for the top.
   Pop the remaining bars from stack if stack is not empty and calculate
      area with every popped bar as the smallest bar.
End

उदाहरण कोड

#include<iostream>
#include<stack>
using namespace std;
int getArea(int hist[], int n)
{
   stack<int> st;
   int largest_area = 0;
   int top;
   int toparea;
   int i = 0;
   while (i < n)
   {
      if (st.empty() || hist[st.top()] <= hist[i])
      st.push(i++);
      else
      {
         top = st.top();
         st.pop();
         toparea = hist[top] * (st.empty() ? i :
         i - st.top() - 1);
         if (largest_area < toparea)
         largest_area = toparea;
      }
   }
   while (st.empty() == false)
   {
      top = st.top();
      st.pop();
      toparea = hist[top] * (st.empty() ? i :
      i - st.top() - 1);
      if (largest_area < toparea)
      largest_area = toparea;
   }
   return largest_area;
}
int main()
{
   int hist[] = {6,7,4,5,3,2};
   int n = sizeof(hist)/sizeof(hist[0]);
   cout << "Largest area is " << getArea(hist, n);
   return 0;
}

आउटपुट

Largest area is 16

  1. C++ में दीर्घवृत्त में अंकित सबसे बड़े वृत्त का क्षेत्रफल ज्ञात कीजिए

    मान लीजिए कि हमारे पास एक दीर्घवृत्त है, जिसमें प्रमुख और लघु अक्ष लंबाई 2a और 2b है। हमें उस सबसे बड़े वृत्त का क्षेत्रफल ज्ञात करना है जिसे उसमें अंकित किया जा सकता है। तो अगर a =5 और b =3, तो क्षेत्रफल 28.2734 होगा से हम देख सकते हैं कि एक दीर्घवृत्त में अंकित अधिकतम क्षेत्रफल वाले वृत्त की त्

  1. C++ का प्रयोग करके दीर्घवृत्त का क्षेत्रफल ज्ञात करने का कार्यक्रम

    यहां हम देखेंगे कि C++ का उपयोग करके दीर्घवृत्त का क्षेत्रफल कैसे प्राप्त करें। अंडाकार के अलग-अलग हिस्से होते हैं। ये नीचे की तरह हैं। मुख्य बिंदु विवरण केंद्र दीर्घवृत्त का केंद्र। यह रेखा खंडों का भी केंद्र है जो दो फ़ॉसी को जोड़ता है। प्रमुख अक्ष दीर्घवृत्त का सबसे लंबा व्यास nmemb यह तत्व

  1. पायथन में हिस्टोग्राम के तहत सबसे बड़ा आयत क्षेत्र खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास हिस्टोग्राम में बार की ऊंचाई का प्रतिनिधित्व करने वाली संख्याओं की एक सूची है। हमें सबसे बड़े आयत का क्षेत्रफल ज्ञात करना है जो कि सलाखों के नीचे बन सकता है। इसलिए, यदि इनपुट अंकों की तरह है =[3, 2, 5, 7] तो आउटपुट 10 . होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंग