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

मैट्रिक्स चेन गुणन के लिए C प्रोग्राम


इस समस्या में, हमें मैट्रिक्स का एक अनुक्रम (सरणी) दिया गया है। हमारा कार्य मैट्रिक्स चेन गुणन के लिए 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 MatrixChainMultiplication(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("मैट्रिक्स गुणन के लिए आवश्यक न्यूनतम गुणन की संख्या %d है", MatrixChainMultiplication(arr, size));     getchar();     return 0; }

आउटपुट

मैट्रिक्स गुणन के लिए आवश्यक न्यूनतम गुणन की संख्या 444 है
  1. C प्रोग्राम: आर्मस्ट्रांग नंबर्स (Armstrong Numbers) C प्रोग्राम: आर्मस्ट्रांग नंबर्स (Armstrong Numbers)

    हमें उपयोगकर्ता द्वारा दर्ज संख्या n की जांच करनी है कि यह आर्मस्ट्रांग संख्या है या नहीं। एक आर्मस्ट्रांग संख्या वह है जिसके अंकों को अंकों की संख्या (क्रम) की घात तक बढ़ाकर उनका योग करने पर मूल संख्या प्राप्त होती है। सूत्र: wxyz... = wⁿ + xⁿ + yⁿ + zⁿ + ... एल्गोरिदम START फंक्शन power(a, b): a^b

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

    एक आयत की लंबाई और चौड़ाई दी गई है, हमें उसका क्षेत्रफल और परिमाप निकालना है। आयत एक 2-D आकृति है जिसमें चार भुजाएं और चार 90° के कोण होते हैं। विपरीत भुजाएं समान होती हैं। विकर्ण भी समान होते हैं। क्षेत्रफल = लंबाई × चौड़ाई परिमाप = 2 × (लंबाई + चौड़ाई) उदाहरण इनपुट: 20 30 आउटपुट: area of rectangl

  1. C++ में सरणी के एलिमेंट्स का गुणनफल C++ में सरणी के एलिमेंट्स का गुणनफल

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