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

किसी भी बीजीय व्यंजक का न्यूनतम मान ज्ञात करने के लिए C++ प्रोग्राम

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

एल्गोरिदम

Begin
   function MaxValue() :
   Arguments:
   a[] = array which store the elements.
   x,y = integers.
   Body of the function:
   1) Find the sum of array elements.
   2) Initialize s=0.
   3) Make for loop i = 0 to (x + y)-1 Shift the integers by 25 so that they become positive.
   4) Declare a boolean array p[i][j] that represents true if sum j can be reachable by choosing i numbers.
   5) Initialization of the array.
   6) Make for loop i = 0 to (x + y)-1 to determine If p[i][j] is true, that means it is possible to select i numbers from (x + y) numbers to sum upto j.
   7) Initialize min_value=INF.
   8) Make for loop i = 0 to (MAX * MAX + 1)-1 to Check if a particular sum can be reachable by choosing x numbers.
   if (p[x][i])
      Get the actual sum as we shifted the numbers by 25 to avoid negative indexing in array .
   9) Print the min_value.
End

उदाहरण

#include <bits/stdc++.h>
using namespace std;
#define INF 1e9
#define MAX 25
int MinValue(int a[], int x, int y) {
   int s= 0;
   for (int i = 0; i < (x + y); i++) {
      s+= a[i];
      a[i] += 25;
   }
   bool p[MAX+1][MAX * MAX + 1];
   //Initialize the array to 01.
   memset(p, 0, sizeof(p));
   p[0][0] = 1;
   for (int i = 0; i < (x + y); i++) {
      // k can be at max x because the
      // left expression has x numbers
      for (int k = min(x, i + 1); k >= 1; k--) {
         for (int j = 0; j < MAX * MAX + 1; j++) {
            if (p[k - 1][j])
               p[k][j + a[i]] = 1;
         }
      }
   }
   int min_value = INF;
   for (int i = 0; i < MAX * MAX + 1; i++) {
      if (p[x][i]) {
         int tmp = i - 25 * x;
         min_value = min(min_value, tmp * (s - tmp));
      }
   }
   cout << "Minimum Value: " << min_value ;
}
int main() {
   int x = 2, y = 2; //input is taken of x and y.
   int ar[] = { 7,6,4,3 };
   MinValue(ar, x, y);
   return 0;
}

आउटपुट

Minimum Value: 91

  1. C++ में प्रत्येक कार्तीय निर्देशांक को जोड़ने के लिए न्यूनतम लागत ज्ञात करने का कार्यक्रम

    मान लीजिए कि हमारे पास 2D कार्टेशियन निर्देशांक बिंदुओं (x, y) की एक सूची है। हम (x0, y0) और (x1, y1) को जोड़ सकते हैं, जिसकी लागत |x0 - x1| + |y0 - y1|। यदि हमें किसी भी संख्या में बिंदुओं को जोड़ने की अनुमति दी जाती है, तो हमें आवश्यक न्यूनतम लागत का पता लगाना होगा जैसे कि प्रत्येक बिंदु एक पथ से

  1. सी++ में संचार टावरों में समूहों की न्यूनतम संख्या खोजने का कार्यक्रम?

    मान लीजिए कि हमारे पास 2 डी बाइनरी मैट्रिक्स है जहां 1 संचार टावर का प्रतिनिधित्व करता है, और 0 एक खाली सेल का प्रतिनिधित्व करता है। टावर निम्नलिखित तरीकों से संचार कर सकते हैं:1. यदि टावर ए, और टावर बी या तो एक ही पंक्ति या कॉलम पर हैं, तो वे एक दूसरे के साथ संवाद कर सकते हैं। 2. यदि टावर ए टावर बी

  1. पेड़ के स्तर को खोजने के लिए कार्यक्रम जिसमें सी ++ में न्यूनतम योग है

    मान लीजिए हमारे पास एक बाइनरी ट्री है, इसकी जड़ का स्तर 1 है, इसके बच्चों का स्तर 2 है, और इसी तरह। हमें सबसे छोटा स्तर X खोजना है जैसे कि स्तर X पर नोड्स के सभी मानों का योग न्यूनतम हो। तो अगर पेड़ जैसा है - आउटपुट 2 होगा क्योंकि योग 4 - 10 =-6 है, जो न्यूनतम है। इसे हल करने के लिए, हम इन चरणों