Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

अधिकतम दिए गए आकार के आयत जिन्हें C . में कागज की एक शीट से काटा जा सकता है


हमें कागज की शीट के आयाम दिए गए हैं, इसकी लंबाई L और चौड़ाई B है। साथ ही, हमें एक छोटे आयत के आयाम दिए गए हैं, इसकी लंबाई l और चौड़ाई b है। लक्ष्य कागज की एक शीट से काटे जा सकने वाले छोटे आयतों की अधिकतम संख्या ज्ञात करना है।

हम निम्नलिखित कदम उठाएंगे -

  • सबसे पहले, हम क्षैतिज संरेखण, लंबाई L और l शीट और आयत क्रमशः लेंगे। L को l से और B को b से संरेखित करना शुरू करें और आयतों को गिनें।

  • फिर लंबवत संरेखण में भी ऐसा ही करें। फिर से गिनें। गिनती का अधिकतम मान लौटाएं।

आइए एक उदाहरण से समझते हैं।

इनपुट

Sheet L=18, B=6 Rectangle l=4, b=3

आउटपुट

Maximum rectangles: 8

स्पष्टीकरण

Horizontal 18/4=4 6/3=2 2*4=8 rectangles possible
Vertical 18/3=6 6/4=1 6*1=6 rectangles possible
Maximum rectangles here is 8

इनपुट

Sheet L=10, B=6 Rectangle l=4, b=2

आउटपुट

Maximum rectangles: 6

स्पष्टीकरण

Horizontal 10/4=2 6/2=3 2*3=6 rectangles possible
Vertical 10/2=5 6/4=1 5*1=5 rectangles possible
Maximum rectangles here is 6

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • चर लंबाई और चौड़ाई का उपयोग शीट के आयामों को संग्रहीत करने के लिए किया जाता है।

  • आयत के आयामों को संग्रहीत करने के लिए चर लेन और ब्रे का उपयोग किया जाता है।

  • फ़ंक्शन maxRectangles (int L, int B, int l, int b) शीट और आयत के आयाम लेता है और संभव आयतों की अधिकतम संख्या देता है।

  • चर numh और numv का उपयोग आयतों की संख्या को संग्रहीत करने के लिए किया जाता है जिन्हें क्षैतिज और लंबवत रूप से काटा जा सकता है।

  • क्षैतिज रूप से, cols=L/l और Rows=B/b, संभव आयतों, numh=cols*rows को विभाजित करें।

  • लंबवत के लिए, cols=L/b और Rows=B/l, संभव आयतों, numv=cols*rows को विभाजित करें।

  • उपरोक्त दो चरणों numh या numv में प्राप्त परिणाम के रूप में अधिकतम मान लौटाएं।

उदाहरण

#include <stdio.h>
int maxRectangles (int L, int B, int l, int b){
   int numh = 0, numv = 0;
   // Cut rectangles horizontally if possible
   if (l <= L && b <= B){
      // One rectangle is a single cell
      int cols = B / b;
      int rows = L / l;
      // Total rectangles = total cells
      numh = rows * cols;
   }
   // Cut rectangles vertically if possible
   if (l <= B && b <= L){
      int cols = L / b;
      int rows = B / l;
      numv = rows * cols;
   }
   // Return the maximum possible rectangles
   return numh>numv?numh:numv;
}
// Driver code
int main (){
   int Length = 18;
   int Breadth =6;
   int len = 4, bre = 3;
   printf("Maximum rectangles: %d",maxRectangles(Length,Breadth,len,bre));
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Maximum given sized rectangles that can be cut out of a sheet of paper: 8

  1. अधिकतम 2×2 वर्ग जो C . में एक समद्विबाहु त्रिभुज के अंदर फिट हो सकते हैं

    हमें एक समद्विबाहु त्रिभुज दिया गया है। समद्विबाहु त्रिभुज वह होता है जिसकी दो भुजाएँ समान लंबाई की होती हैं। समकोण त्रिभुज वह होता है जिसकी ऊँचाई (अंजीर में ag) और आधार (अंजीर में dg) एक दूसरे के लंबवत होते हैं। लक्ष्य 2 वर्ग इकाइयों के इस दाएं समद्विबाहु त्रिभुज में फिट होने वाले वर्गों की अधिकतम

  1. C++ प्रोग्राम स्कोर की अधिकतम राशि का पता लगाने के लिए जिसे ग्राफ़ से घटाया जा सकता है

    मान लीजिए, एक भारित, अप्रत्यक्ष ग्राफ है जिसमें n कोने और m किनारे हैं। ग्राफ़ के स्कोर को ग्राफ़ में सभी किनारों के वज़न के योग के रूप में परिभाषित किया गया है। किनारे के वजन नकारात्मक हो सकते हैं, और यदि उन्हें हटा दिया जाता है तो ग्राफ का स्कोर बढ़ जाता है। हमें क्या करना है, हमें ग्राफ को कनेक्ट

  1. अधिकतम बिशप जिन्हें C++ में N*N शतरंज की बिसात पर रखा जा सकता है

    हमें एक इनपुट एन दिया गया है जो शतरंज की बिसात के आकार को दर्शाता है। यहाँ कार्य N के किसी भी मान का पता लगाना है, NXN शतरंज की बिसात पर कितने बिशप रखे जा सकते हैं ताकि कोई भी दो बिशप एक दूसरे पर हमला न कर सकें। आइए उदाहरणों से समझते हैं। इनपुट -एन=2 आउटपुट - अधिकतम बिशप जिन्हें N*N शतरंज की बिस