यह देखते हुए कि कार्य आकार 3 के समूहों की अधिकतम संख्या की गणना करना है जो तब बन सकते हैं जब A प्रकार के आइटमों की N संख्या और B प्रकार की वस्तुओं की M संख्या दी गई हो।पी>
साथ ही, प्रत्येक समूह में प्रत्येक प्रकार का कम से कम एक आइटम होना चाहिए, जो या तो ए या बी हो।
आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है -
इनपुट -एन=3, एम=5
इनपुट -2
स्पष्टीकरण
Group 1: 1 item of type A and 2 items of type B Group 2: 1 item of type A and 2 items of type B In total, 2 items of type A and 4 items of type B are used.
इनपुट -एन=5, एम=9
इनपुट -4
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
निम्नलिखित स्थिति को 4 मामलों में विभाजित किया जा सकता है -
-
केस 1 -
जब M>=2N, तब अधिकतम संभव समूह =M
-
केस 2 -
जब N>=2M, तब अधिकतम संभव समूह =N
-
केस 3 -
जब (M+N)% 3 ==0, तब अधिकतम संभव समूह =(M+N)/3
-
केस 4 -
जब उपरोक्त में से कोई भी शर्त सही नहीं होती है तो मामलों की अधिकतम संख्या (M+N)/3 + (कोई भी शेष समूह) हो जाती है।
यह जांचने के लिए कि क्या कोई समूह शेष है, दोनों प्रकार के शेष आइटम प्राप्त करने के लिए N=N%3 और M=M%3 सेट करें और फिर निम्न स्थिति का उपयोग करके जांचें -
अगर ( N!=0 &&M!=0 &&(N+M)>=3)
यदि उपरोक्त शर्त सत्य है, तो अंतिम परिणाम में 1 जोड़ें।
-
-
फंक्शन MaxGrp() में, यदि उपरोक्त मामलों के लिए कंडीशन चेक का उपयोग किया जाता है
-
यदि (M>=2*N) सत्य है तो M को उत्तर के रूप में वापस करें। अन्यथा यदि (N>=2*M) सत्य है तो उत्तर के रूप में N को वापस कर दें।
-
यदि उपरोक्त दोनों स्थितियां सत्य नहीं हैं, तो जांचें कि क्या((एम + एन)% 3 ==0)। यदि यह सत्य है तो उत्तर के रूप में (M + N)/3 लौटाएं।
-
यदि उपरोक्त में से कोई भी शर्त सत्य नहीं है, तो एक वैरिएबल काउंट =(एम + एन)/3 टाइप इंट को इनिशियलाइज़ करें।
N=N%3 और M=M%3 डालें और केस 4 में उपर्युक्त स्थिति का उपयोग करके किसी भी शेष समूह की जांच करें। यदि स्थिति सत्य है तो गिनने के लिए 1 जोड़ें और उत्तर वापस करें।
उदाहरण
#include<bits/stdc++.h> using namespace std; // Implements above mentioned steps. int MaxGrp(int N, int M){ if (N >= 2 * M) return N; if (M >= 2 * N) return M; if ((M + N) % 3 == 0) return (M + N)/3; int count = (M + N)/3; M %= 3; N %= 3; if (M && N && (M + N) >= 3) count++; return count; } int main(){ int N = 5, M = 9; cout << MaxGrp(N, M); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -
4