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

C++ कोड: बनाए जा सकने वाले अधिकतम समूहों की गिनती


मान लीजिए हमारे पास n तत्वों वाली एक सरणी A है। n छात्र समूह थे। एक समूह या तो एक व्यक्ति है जो किसी और के साथ कोड लिख सकता है, या दो लोग हैं जो एक ही टीम में कोड लिखना चाहते हैं। लेकिन मेंटर ने ठीक तीन लोगों की टीम बनाने का फैसला किया। हमें उन तीन लोगों की अधिकतम टीमों की संख्या ज्ञात करनी है जो मेंटर बना सकता है। दो के समूहों के लिए, या तो दोनों छात्रों को कोड लिखना चाहिए, या दोनों को नहीं। यदि दो के समूह के दो छात्र कोड लिखेंगे, तो वे एक ही टीम में होने चाहिए।

इसलिए, यदि इनपुट A = [2, 2, 2, 1, 1, 1, 1] है, तो आउटपुट 3 होगा, क्योंकि मेंटर टीम बना सकता है जैसे: [पहला दो-लोग समूह और सातवां एक-व्यक्ति समूह], [दूसरा दो-लोग समूह और छठा एक-व्यक्ति समूह], [तीसरा दो-लोग समूह और चौथा एक-व्यक्ति समूह]।

चरण

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:

p := 0 q := 0 x := size of A for initialize i := 0, when i < x, update (increase i by 1), do:    a := A[i]    if a is same as 1, then:       p := p + 1    Otherwise       q := q + 1 if p > q, then:    return q + (p - q) otherwise when p < q, then:    return p Otherwise    return p

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; int solve(vector<int> A){    int p = 0, q = 0;    int x = A.size();    for (int i = 0; i < x; i++){       int a = A[i];       if (a == 1){          p = p + 1;       }       else{          q = q + 1;       }    }    if (p > q){       return q + (p - q) / 3;    }    else if (p < q){       return p;    }    else{       return p;    } } int main(){    vector<int> A = { 2, 2, 2, 1, 1, 1, 1 };    cout << solve(A) << endl; }

इनपुट

{ 2, 2, 2, 1, 1, 1, 1 }

आउटपुट

3

  1. - अधिकतम विशिष्ट तत्वों वाले उपअनुक्रमों की गणना - C++

    समस्या विवरण हमें एक पूर्णांक सरणी दी गई है। लक्ष्य उन उपअनुक्रमों की संख्या ज्ञात करना है जिनमें अधिकतम संभव विशिष्ट तत्व हों। उदाहरण इनपुट: arr[] = {1,3,5,4,2,3,1} आउटपुट: 4 व्याख्या: अधिकतम विशिष्ट तत्व: 1,2,3,4,5 (5 तत्व)। उपअनुक्रम: [1,3,5,4,2], [3,5,4,2,1], [5,4,2,3,1], [1,5,4,2,3] इनपुट: ar

  1. - C++ में दी गई ऑपरेशन द्वारा 2 की घात बनाने योग्य संख्याओं की गिनती

    हमें धनात्मक पूर्णांकों की एक सरणी दी गई है। लक्ष्य उन संख्याओं की गिनती ढूंढना है जिन्हें उनमें अधिकतम एक बार 1 जोड़कर 2 की घात बनाया जा सकता है। हम log2(i) का उपयोग करके जांचते हैं कि संख्या 2 की घात है या इसमें 1 जोड़कर 2 की घात बन सकती है। यदि हां तो काउंट बढ़ाते हैं। आइए उदाहरणों से समझते हैं।

  1. - C++ में k अपडेट के साथ बराबर किए जा सकने वाले अधिकतम तत्व

    दिया गया कार्य एक दी गई सरणी में अधिकतम तत्वों की संख्या ढूंढना है जिन्हें अधिकतम k बार इसके तत्वों को बढ़ाकर बराबर बनाया जा सकता है। उदाहरण इनपुट a[] = {1, 3, 8}, k = 4 आउटपुट 2 व्याख्या यहां हम दो चार प्राप्त कर सकते हैं 1 को तीन बार बढ़ाकर और 3 को एक बार बढ़ाकर, जो a[] = {4, 4, 8} बनाता है।