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

C++ प्रोग्राम किसी भी बीजगणितीय अभिव्यक्ति का अधिकतम मान खोजने के लिए


यह किसी भी बीजगणितीय अभिव्यक्ति का अधिकतम मान खोजने के लिए एक C++ प्रोग्राम है। (x1 + x2 + ... + xa) * (y1 + y2 + ... + yb) रूप का एक बीजगणितीय अभिव्यक्ति और (a + b) इंटीजर्स दिए गए हैं। a नंबर्स और शेष b नंबर्स के सभी संभावित संयोजनों पर विचार करें और उनके मानों की गणना करें, जिससे अधिकतम मान प्राप्त किया जा सके।

एल्गोरिदम

  1. ऐरे एलिमेंट्स का योग ढूंढें।
  2. इंटीजर्स को 25 से शिफ्ट करें ताकि वे पॉजिटिव हो जाएं।
  3. बूलियन ऐरे dp[i][j] घोषित करें जो दर्शाता है कि j योग i नंबर्स चुनकर पहुंच योग्य है।
  4. ऐरे इनिशियलाइज़ करें।
  5. सभी संभावित योगों के लिए DP भरें।
  6. अधिकतम मान खोजें: max(tmp * (sum - tmp)) जहां tmp पहुंच योग्य योग है।

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

#define INF 1e9
#define MAX 25

int MaxValue(int a[], int x, int y) {
    int sum = 0;
    for (int i = 0; i < (x + y); i++) {
        sum += a[i];
        a[i] += 25;
    }
    
    bool dp[MAX+1][MAX * MAX + 1];
    memset(dp, 0, sizeof(dp));
    dp[0][0] = 1;
    
    for (int i = 0; i < (x + y); i++) {
        for (int k = min(x, i + 1); k >= 1; k--) {
            for (int j = 0; j < MAX * MAX + 1; j++) {
                if (dp[k-1][j])
                    dp[k][j + a[i]] = 1;
            }
        }
    }
    
    int max_val = -INF;
    for (int i = 0; i < MAX * MAX + 1; i++) {
        if (dp[x][i]) {
            int tmp = i - 25 * x;
            max_val = max(max_val, tmp * (sum - tmp));
        }
    }
    cout << "Maximum Value: " << max_val;
    return max_val;
}

int main() {
    int x = 2, y = 2;
    int ar[] = {7, 6, 4, 3};
    MaxValue(ar, x, y);
    return 0;
}

आउटपुट

Maximum Value: 100

व्याख्या

अभिव्यक्ति: (x1 + x2) * (y1 + y2) जहां 4 नंबर {7,6,4,3} हैं।
संभावित विभाजन: (7+6)*(4+3) = 13*7 = 91
(7+4)*(6+3) = 11*9 = 99
(7+3)*(6+4) = 10*10 = 100 ← अधिकतम

  1. - C++ प्रोग्राम: LCM (लघुत्तम समापवर्त्य) खोजें

    परिचयदो संख्याओं का लघुत्तम समापवर्त्य (LCM) वह सबसे छोटी संख्या है जो दोनों का गुणक है। उदाहरण के लिए: मान लें हमारे पास दो संख्याएं हैं: 15 और 9। 15 = 5 * 3 9 = 3 * 3 इसलिए, 15 और 9 का LCM 45 है। उदाहरण (लूप का उपयोग करके)#include <iostream> using namespace std; int main() { int a = 7,

  1. - C++ प्रोग्राम: GCD (महत्तम समापवर्तक) खोजें

    परिचयदो संख्याओं का महत्तम समापवर्तक (GCD) वह सबसे बड़ी संख्या है जो दोनों को विभाजित करती है। उदाहरण के लिए: मान लें हमारे पास दो संख्याएं हैं 45 और 27। 45 = 5 * 3 * 3 27 = 3 * 3 * 3 इसलिए, 45 और 27 का GCD 9 है। उदाहरण 1 (यूक्लिडियन एल्गोरिदम)#include <iostream> using namespace std; int gcd(

  1. - पायथन में अधिकतम इरेज़र मूल्य ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक एक सरणी है (केवल धनात्मक मानों के साथ) और हम अद्वितीय तत्वों वाला एक उपसरणी मिटाना चाहते हैं। हमें स्कोर मिलेगा जो उपसरणी तत्वों का योग है। हमें ठीक एक उपसरणी मिटाकर प्राप्त होने वाला अधिकतम स्कोर ज्ञात करना है। इसलिए, यदि इनपुट है nums = [6,3,2,3,6,3,2,3,6], तो आउटपुट