Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

मैट्रिक्स श्रृंखला गुणन के लिए सी कार्यक्रम

इस समस्या में, हमें मेट्रिक्स का अनुक्रम (सरणी) दिया जाता है। हमारा काम मैट्रिक्स श्रृंखला गुणन के लिए एक C प्रोग्राम बनाना है . हमें इन मैट्रिक्स को गुणा करने का एक तरीका खोजने की जरूरत है ताकि, गुणा की न्यूनतम संख्या की आवश्यकता हो।

मैट्रिक्स की सरणी में n तत्व होंगे, जो मैट्रिक्स के आयामों को परिभाषित करते हैं, arr[i-1] X arr[i]

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

array[] = {3, 4, 5, 6}

आउटपुट

स्पष्टीकरण

मैट्रिक्स क्रम के होंगे -

Mat1 = 3X4, Mat2 = 4X5, Mat3 = 5X6

इन तीन आव्यूहों के लिए, गुणा करने के दो तरीके हो सकते हैं,

mat1*(mat2*mat3) -> (3*4*6) + (4*5*6) = 72 + 120 = 192
(mat1*mat2)*mat3 -> (3*4*5) + (3*5*6) = 60 + 90 = 150

(mat1*mat2)*mat3 के मामले में गुणन की न्यूनतम संख्या 150 होगी।

डायनेमिक प्रोग्रामिंग का उपयोग करके समस्या को हल किया जा सकता है क्योंकि इसमें डायनेमिक प्रोग्रामिंग में इष्टतम सबस्ट्रक्चर और ओवरलैपिंग सबस्ट्रक्चर दोनों गुण होते हैं।

तो यहाँ है डायनामिक प्रोग्रामिंग का उपयोग करके मैट्रिक्स श्रृंखला गुणन के लिए C प्रोग्राम

उदाहरण

#include <stdio.h>
int MatrixChainMultuplication(int arr[], int n) {
   int minMul[n][n];
   int j, q;
   for (int i = 1; i < n; i++)
      minMul[i][i] = 0;
   for (int L = 2; L < n; L++) {
      for (int i = 1; i < n - L + 1; i++) {
         j = i + L - 1;
         minMul[i][j] = 99999999;
         for (int k = i; k <= j - 1; k++) {
            q = minMul[i][k] + minMul[k + 1][j] + arr[i - 1] * arr[k] * arr[j];
            if (q < minMul[i][j])
            minMul[i][j] = q;
         }
      }
   }
   return minMul[1][n - 1];
}
int main(){
   int arr[] = {3, 4, 5, 6, 7, 8};
   int size = sizeof(arr) / sizeof(arr[0]);
   printf("Minimum number of multiplications required for the matrices multiplication is %d ",    MatrixChainMultuplication(arr, size));
   getchar();
   return 0;
}

आउटपुट

Minimum number of multiplications required for the matrices multiplication is 444

  1. आर्मस्ट्रांग नंबरों के लिए सी प्रोग्राम

    हमें एक टास्क दिया जाता है जहां हमें उपयोगकर्ता द्वारा दर्ज किए गए नंबर n की जांच करनी होती है, चाहे वह आर्मस्ट्रांग हो या नहीं। एक आर्मस्ट्रांग संख्या तब होती है जब अंकों की संख्या से सभी अंकों की शक्ति का योग होता है या हम कह सकते हैं कि अंकों का क्रम अंक के समान है। तो आर्मस्ट्रांग नंबर कैसे पत

  1. C आयत के क्षेत्रफल और परिमाप के लिए कार्यक्रम

    एक आयत की लंबाई और चौड़ाई को देखते हुए हमें उसका क्षेत्रफल और परिमाप ज्ञात करना होता है। आयत 2-डी आकृति है जिसमें चार भुजाएँ और प्रत्येक 90 डिग्री के चार कोण हैं। आयत की सभी भुजाएँ समान नहीं होती केवल आयत की सम्मुख भुजाएँ समान होती हैं। एक आयत के विकर्ण भी समान लंबाई के होते हैं। नीचे आयत का आरेखी

  1. सरणी तत्वों के गुणन के लिए C++ प्रोग्राम

    पूर्णांक तत्वों की एक सरणी के साथ दिया गया और कार्य एक सरणी के तत्वों को गुणा करना और इसे प्रदर्शित करना है। उदाहरण Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए कार्यक्रम में उपयोग क