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

C++ में लाइन सेगमेंट की दी गई लंबाई का उपयोग करके अधिकतम समांतर चतुर्भुज बनाए जा सकते हैं


यह देखते हुए कि यदि प्रत्येक रेखा खंड को एक समांतर चतुर्भुज में अधिक से अधिक उपयोग किया जा सकता है, तो दिए गए N संख्या रेखाखंडों का उपयोग करके बनाए जा सकने वाले समांतर चतुर्भुजों की अधिकतम संख्या ज्ञात करना है।

आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है -

इनपुट - Arr[] ={8, 3, 1, 3, 8, 7, 1, 3, 5, 3}

आउटपुट -2

स्पष्टीकरण - ऊपर दिए गए रेखाखंडों से, दो समांतर चतुर्भुज जो क्रमशः 8, 1, 8, 1 और 3, 3, 3, 3 भुजाओं वाले बन सकते हैं।

इनपुट − Arr[] ={7, 9, 9, 7}

आउटपुट - 1

निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है

  • जितने समांतर चतुर्भुज बनाए जा सकते हैं, वे होंगे =समांतर चतुर्भुज जो 4 समान या समान भुजाओं के साथ बनाए जा सकते हैं और समांतर चतुर्भुज जो 2 समान भुजाओं का उपयोग करके बनाए जा सकते हैं।

  • फ़ंक्शन MaxParr() में, एक वैरिएबल L =Arr[0] को इनिशियलाइज़ करें, जिसका उपयोग उस सरणी के आकार के रूप में किया जाएगा जिसका उपयोग लाइन सेगमेंट की आवृत्तियों को संग्रहीत करने के लिए किया जाएगा।

  • i=1 से i L), और if स्टेटमेंट के अंदर L=Arr[i] डालें। लूप के बाहर L का आकार 1 से बढ़ाएं।

  • फिर आवृत्ति सरणी int Freq[L] ={0} प्रारंभ करें। i=0 से i

  • समांतर चतुर्भुज की अंतिम गणना को संग्रहीत करने के लिए प्रारंभिक गणना =0 प्रकार int।

  • i=0 से i

  • 2 समान पक्षों का उपयोग करके बनाए जा सकने वाले समांतर चतुर्भुजों की संख्या को संग्रहीत करने के लिए बाएं =0 प्रकार int को प्रारंभ करें।

  • अंत में i=0 से i=2) और यदि ऐसा है तो बाईं ओर 1 जोड़ें।

  • काउंट+=लेफ्ट/2 और रिटर्न काउंट लगाएं।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int MaxParr(int N, int Arr[]){
   //Finding length of frequency array
   int L = Arr[0];
   for (int i = 1; i < N; i++){
      if (Arr[i] > L)
         L = Arr[i];
   }
   L = L + 1;
   int Freq[L] = {0};
   for (int i = 0; i < N; i++){
      //Increasing occurrence of each line segment
      Freq[Arr[i]] += 1;
   }
   // To store the number of parallelograms
   int count = 0;
   for (int i = 0; i < L; i++){
      /*parallelograms that can be made using 4 same sides*/
      count += int(Freq[i] / 4);
      Freq[i] = Freq[i] % 4;
   }
   int left = 0;
   for (int i = 0; i < L; i++){
      //Counting segments with 2 or more occurrences left
      if (Freq[i] >= 2)
         left += 1;
   }
   /*Adding parallelograms that can be formed using using 2 similar sides into the final count*/
   count += left / 2;
   return count;
}
int main(){
   int N = 10;
   int Arr[] = { 8, 3, 1, 3, 8, 7, 1, 3, 5, 3};
   cout<< MaxParr(N, Arr);
}

आउटपुट

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

2

  1. अधिकतम संख्या जिसे C++ में N सेगमेंट का उपयोग करके सेवन सेगमेंट डिस्प्ले पर प्रदर्शित किया जा सकता है

    यह देखते हुए कि कार्य सात खंड प्रदर्शन की चींटी संख्या पर N खंड का उपयोग करके प्रदर्शित की जा सकने वाली अधिकतम संख्या ज्ञात करना है। आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है - इनपुट -एन=5 आउटपुट - 71 स्पष्टीकरण − सबसे बड़ी संख्या सात खंडों के प्रदर्शन पर निम्नानुसार प्रदर्शि

  1. C++ का उपयोग करके दिए गए नंबर तक जोड़ने वाले सभी संयोजन खोजें

    मान लीजिए कि हमारे पास एक सकारात्मक संख्या n है। हमें सकारात्मक संख्याओं के सभी संयोजनों को खोजना है, जो उस संख्या में जुड़ते हैं। यहां हम केवल संयोजन चाहते हैं, क्रमपरिवर्तन नहीं। मान n =4 के लिए, [1, 1, 1, 1], [1, 1, 2], [2, 2], [1, 3], [4] होंगे। हम इसे रिकर्सन का उपयोग करके हल करेंगे। हमारे पास

  1. पायथन में दिए गए अक्षरों का उपयोग करके सबसे लंबी लंबाई ज्ञात करने का कार्यक्रम, जिसे बनाया जा सकता है

    मान लीजिए कि हमारे पास स्ट्रिंग्स की एक सूची है जिसे शब्द कहा जाता है और एक अन्य स्ट्रिंग जिसे अक्षर कहा जाता है, हमें शब्दों में सबसे लंबी स्ट्रिंग की लंबाई ज्ञात करनी है जो अक्षरों में वर्णों से बन सकती है। यदि कोई शब्द नहीं बनाया जा सकता है, तो 0 लौटाएं। यहां हम अक्षरों का पुन:उपयोग नहीं कर सकते