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

C++ में दिए गए योग के साथ अधिकतम आकार का सबसेट


समस्या कथन

N तत्वों का एक एरे और योग दिया गया है। हमें उस अधिकतम आकार के सबसेट का आकार ढूंढना है जिसका योग दिए गए योग के बराबर हो।

उदाहरण

यदि इनपुट एरे arr = { 2, 3, 5, 10 } है और योग = 20 है तो आउटपुट 4 होगा क्योंकि −

2 + 3 + 5 + 10 = 20 जो दिए गए योग के बराबर है।

एल्गोरिदम

हम इस समस्या को हल करने के लिए डायनामिक प्रोग्रामिंग का उपयोग कर सकते हैं।

अधिकतम सबसेट गिनने के लिए, हम एक और DP एरे (जिसे 'काउंट एरे' कहा जाता है) का उपयोग करते हैं जहां count[i][j] निम्न का अधिकतम है।

  • count[i][j-1]. यहां वर्तमान तत्व पर विचार नहीं किया जाता।
  • scount[i- X][j-1] + 1. यहां X सबसेट के लिए चुने गए वर्तमान तत्व का मान है।

उदाहरण

#include<bits/stdc++.h> using namespace std; int isSubsetSum(int set[], int n, int sum) {    bool subset[sum + 1][n + 1];    int count[sum + 1][n + 1];    for (int i = 0; i <= n; i++) {    subset[0][i] = true;       count[0][i] = 0;    }    for (int i = 1; i <= sum; i++) {       subset[i][0] = false;       count[i][0] = -1;    }    for (int i = 1; i <= sum; i++) {       for (int j = 1; j <= n; j++) {          subset[i][j] = subset[i][j - 1];          count[i][j] = count[i][j - 1];          if (i >= set[j - 1]) {             subset[i][j] = subset[i][j] || subset[i - set[j - 1]][j - 1];             if (subset[i][j]) {                count[i][j] = max(count[i][j - 1], count[i - set[j - 1]][j - 1] + 1);             }          }       }   }   return count[sum][n]; } int main() {    int set[] = { 2, 3, 5, 10 };    int sum = 20;    int n = 4;    cout<< "Result = " << isSubsetSum(set, n, sum) << endl; }

आउटपुट

जब आप उपरोक्त प्रोग्राम को कंपाइल और चलाएंगे। यह निम्नलिखित आउटपुट उत्पन्न करेगा −

Result = 4

  1. - C++ में दिए गए योग वाले सभी युग्म प्रिंट करें

    इस समस्या में, हमें पूर्णांकों की एक सरणी और एक पूर्णांक योग दिया गया है और हमें उन सभी पूर्णांक युग्मों को प्रिंट करना है जिनका योग योग मान के बराबर है। समस्या को समझने के लिए एक उदाहरण लेते हैं : इनपुट - सरणी = {1, 6, -2, 3} योग = 4 आउटपुट - (1, 3) , (6, -2) यहां, हमें दिए गए योग मान वाले युग्म चा

  1. - C++ में अधिकतम आकार 2 और दी गई वैल्यू द्वारा सीमित योग के साथ न्यूनतम पार्टीशन

    समस्या विवरण सकारात्मक संख्याओं का एक ऐरे arr[] दिया गया है, ऐरे में न्यूनतम संख्या में सेट ढूंढें जो निम्नलिखित गुण को संतुष्ट करते हैं: एक सेट में अधिकतम दो एलिमेंट्स हो सकते हैं। दोनों एलिमेंट्स का सन्निकट होना आवश्यक नहीं है। सेट के एलिमेंट्स का योग दी गई Key से कम या बराबर होना चाहिए। यह माना

  1. - C++ का उपयोग करके मैट्रिक्स में अधिकतम योग वाला कॉलम खोजें

    मान लीजिए हमारे पास M x N आकार का एक मैट्रिक्स है। हमें वह कॉलम ढूंढना है जिसका योग अधिकतम है। इस प्रोग्राम में हम किसी ट्रिकी दृष्टिकोण का पालन नहीं करेंगे, बल्कि सरणी को कॉलम-वार पार करेंगे, प्रत्येक कॉलम का योग प्राप्त करेंगे, और यदि योग अधिकतम है, तो उस योग और कॉलम इंडेक्स को प्रिंट करेंगे। उदा