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

C++ में न्यूनतम गुणनफल वाले ट्रिपलेट्स बनाने के तरीकों की गिनती


हमें संख्याओं की एक सरणी Arr[] दी गई है। लक्ष्य उन ट्रिपलेट्स की संख्या गिनना है जिनका गुणनफल सभी संभावित ट्रिपलेट्स के सबसे छोटे गुणनफल के बराबर है। ट्रिपलेट्स गिनें यदि (i

हम इसे पहले न्यूनतम गुणनफल ढूंढकर करेंगे जहां (i

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

इनपुट - arr[]= { 1,2,3,2,4,1,5 }

आउटपुट - ट्रिपलेट्स की संख्या: 2

व्याख्या -

यहां न्यूनतम गुणनफल 2 है ट्रिप्लेट 1[ 1,2,3,2,4,1,5 ] → (1,2,1) गुणनफल=2 ट्रिप्लेट 2 [ 1,2,3,2,4,1,5 ] → (1,2,1) गुणनफल=2 गुणनफल 2 वाले ट्रिपलेट्स की संख्या जो न्यूनतम है, 2 है।

इनपुट - arr[]= { 1,1,2,1,2,2 }

आउटपुट - ट्रिपलेट्स की संख्या: 1

व्याख्या -

यहां न्यूनतम गुणनफल 1 है ट्रिप्लेट 1 [ 1,1,2,1,2,2 ] → (1,1,1) गुणनफल=1 गुणनफल 1 वाले ट्रिपलेट्स की संख्या जो न्यूनतम है, 1 है।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • हम यादृच्छिक संख्याओं से आरंभ एक पूर्णांक सरणी Arr[] लेते हैं।

  • एक वेरिएबल N लेते हैं जो Arr[] की लंबाई स्टोर करता है।

  • फंक्शन countTriplets(int arr[], int n) एक सरणी, उसकी लंबाई को इनपुट के रूप में लेता है और उन ट्रिपलेट्स को लौटाता है जिनका गुणनफल न्यूनतम गुणनफल के बराबर है।

  • ट्रिपलेट्स की संख्या के लिए प्रारंभिक वेरिएबल count को 0 के रूप में लेते हैं।

  • प्रत्येक ट्रिप्लेट के गुणनफल के लिए प्रारंभिक वेरिएबल prod को 1 के रूप में लेते हैं।

  • सभी ट्रिपलेट्स के न्यूनतम संभव गुणनफल के लिए प्रारंभिक वेरिएबल minprod को 999 के रूप में लेते हैं।

  • प्रत्येक ट्रिप्लेट के तत्व के लिए तीन फॉर लूप का उपयोग करके सरणी को पार करते हैं।

  • बाहरी लूप 0<=i

  • prod=arr[i]*arr[j]*arr[k] की गणना करते हैं। यदि prod<=minprod तो minprod को prod से अपडेट करते हैं।

  • अब minprod में सभी ट्रिपलेट्स के सबसे कम गुणनफल का मान है।

  • फिर से प्रत्येक ट्रिप्लेट के तत्व के लिए तीन फॉर लूप का उपयोग करके सरणी को पार करते हैं।

  • बाहरी लूप 0<=i

  • prod=arr[i]*arr[j]*arr[k] की गणना करते हैं। यदि prod==minprod तो काउंट बढ़ाते हैं। क्योंकि इस युग्म का न्यूनतम गुणनफल है।

  • सभी लूप के अंत में काउंट में शर्त पूरी करने वाले ट्रिपलेट्स की कुल संख्या होगी।

  • काउंट को परिणाम के रूप में लौटाते हैं।

उदाहरण

#include <bits/stdc++.h> using namespace std; int countTriplets(int arr[],int n){ int count = 0; int prod=1; int minprod=9999; //न्यूनतम को सरणी में किसी भी गुणनफल से बड़ा बनाना for (int i = 0; i < n-2; i++){ for (int j = i+1; j < n-1; j++){ for (int k = j+1; k < n; k++){ prod=arr[i]*arr[j]*arr[k]; if ( prod<=minprod ) { minprod=prod; } } } } // cout<<"minproduct :"< 

आउटपुट

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

ट्रिपलेट्स की संख्या: 2

  1. C++ में एक सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या गिनें C++ में एक सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या गिनें

    समस्या विवरण दो संख्याएं e और p दी गई हैं। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे हम एक सेट के e तत्वों को p पार्टीशन/उपसमुच्चयों में विभाजित कर सकते हैं। उदाहरण इनपुट e=4 p=2 आउटपुट सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या: 7 व्याख्या यदि तत्व हैं: a b c d तो उन्हें 2 पार्टीशन

  1. - C++ में 'n' को विषम पूर्णांकों के योग के रूप में व्यक्त करने के तरीकों की गिनती

    समस्या विवरण एक पूर्णांक n इनपुट के रूप में दिया गया है। लक्ष्य उन तरीकों की संख्या ज्ञात करना है जिनसे हम n को विषम पूर्णांकों के योग के रूप में दर्शा सकते हैं। उदाहरण के लिए, यदि n 3 है तो इसे योग (1+1+1) और (3) के रूप में दर्शाया जा सकता है इसलिए कुल 2 तरीके। उदाहरण इनपुट n=6 आउटपुट n को विषम प

  1. C++ में क्रमबद्ध डबल लिंक्ड सूची में दिए गए गुणनफल x वाले ट्रिपलेट की गिनती C++ में क्रमबद्ध डबल लिंक्ड सूची में दिए गए गुणनफल x वाले ट्रिपलेट की गिनती

    समस्या विवरण एक क्रमबद्ध डबल लिंक्ड सूची दी गई है जिसमें पूर्णांक मान हैं। लक्ष्य उन ट्रिपलेट को ढूंढना है जिनका गुणनफल दिए गए मान x के बराबर है। यदि इनपुट लिंक्ड सूची 3-4-1-2 है और x 6 है तो गिनती 1 होगी (ट्रिपलेट (3,1,2))। उदाहरण इनपुट linked list: [200-4-16-5-10-10-2] x=200 आउटपुट दिए गए गुणनफ