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

सी ++ प्रोग्राम गतिशील प्रोग्रामिंग का उपयोग करके इष्टतम पैरांथेसाइज़ेशन करने के लिए

यह एक सी++ प्रोग्राम है जो डायनामिक प्रोग्रामिंग का उपयोग करके ऑप्टिमल पैरंथेसाइज़ेशन करने के लिए है।

एल्गोरिदम

Begin
   Take the length n and dimension of matrix as input.
   MatrixChain() to find out minimum multiplications:
   Arguments:
      a[i][j]=Minimum number of scalar multiplications needed to
         compute the matrix A[i]A[i+1]...A[j] = A[i..j] where dimension of A[i] is p[i-1] x p[i].
         a[i][j] means cost is zero when multiplying one matrix.
      L is chain length.
      m = cost / scalar multiplications.
   Body of the function:
      for i = 1 to n-1
         Initialize a[i][i] = 0
      for L = 2 to n-1
         for i = 1 to n - L + 1
            j = i + L - 1
            a[i][j] = INT_MAX
            for k = i to j - 1
               m = a[i][k] + a[k + 1][j] + p[i - 1] * p[k] * p[j];
               if (m < a[i][j])
               a[i][j] = m
               b[i][j] = k
   return a[1][n - 1]
End

उदाहरण

#include<limits.h>
#include<iostream>
using namespace std;
int MatrixChain(int p[], int n) {
   int a[n][n];
   int b[n][n];
   int i, j, k, L, m;
   for (i = 1; i < n; i++)
      a[i][i] = 0;
   for (L = 2; L < n; L++) {
      for (i = 1; i <= n - L + 1; i++) {
         j = i + L - 1;
         a[i][j] = INT_MAX;
         for (k = i; k <= j - 1; k++) {
            m = a[i][k] + a[k + 1][j] + p[i - 1] * p[k] * p[j];
            if (m < a[i][j]) {
               a[i][j] = m;
               b[i][j] = k;
            }
         }
      }
   }
   return a[1][n - 1];
}
int main() {
   cout << "Enter the length:";
   int n;
   cin >> n;
   int a[n];
   cout << "Enter the dimensions: ";
   for (int v = 0; v < n; ++v) {
      cin >> a[v];
   }
   cout << "Minimum number of multiplications is: " <<
   MatrixChain(a,n);
   return 0;
}

आउटपुट

Enter the length:5
Enter the dimensions: 2 3 7 6 4
Minimum number of multiplications is: 174

  1. बाइनरी ट्री में नोड्स का अधिकतम योग जैसे कि C++ प्रोग्राम में डायनामिक प्रोग्रामिंग का उपयोग करते हुए कोई भी दो आसन्न नहीं हैं

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है जिसमें प्रत्येक नोड का एक मान होता है। हमारा काम बाइनरीट्री में नोड्स की अधिकतम राशि को खोजने के लिए एक प्रोग्राम बनाना है जैसे कि कोई भी दो आसन्न न हो। डायनामिक प्रोग्रामिंग का उपयोग करना। समस्या का विवरण - हम योग को अधिकतम करने के लिए बाइनरी ट्री के

  1. इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम के लिए C++ प्रोग्राम

    पृष्ठ संख्या और पृष्ठ आकार दिया गया; कार्य हिट और मिस की संख्या का पता लगाना है जब हम इष्टतम पेज रिप्लेसमेंट एल्गोरिथम का उपयोग करके किसी पृष्ठ को मेमोरी ब्लॉक आवंटित करते हैं। इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम क्या है? इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथ्म एक पृष्ठ प्रतिस्थापन एल्गोरिथ्म है। पेज

  1. C++ प्रोग्राम का उपयोग करके प्रोग्राम कैसे लॉन्च करें?

    यहां हम देखेंगे कि कुछ तृतीय-पक्ष एप्लिकेशन जैसे नोटपैड या सी ++ प्रोग्राम का उपयोग करके कुछ भी कैसे शुरू किया जाए। यह प्रोग्राम बहुत सरल है, हम इस कार्य को करने के लिए कमांड प्रॉम्प्ट कमांड का उपयोग कर सकते हैं। हम सिस्टम () फ़ंक्शन के अंदर एप्लिकेशन का नाम पास करेंगे। यह उसके अनुसार खुल जाएगा। उद