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

C++ में प्रोडक्ट ऐरे पजल (अतिरिक्त स्पेस के साथ)

यहां हम ऐरे से संबंधित एक रोचक समस्या देखेंगे। n तत्वों वाला एक ऐरे है। हमें n तत्वों का एक और ऐरे बनाना है। लेकिन दूसरे ऐरे का i-th स्थान पहले ऐरे के i-th तत्व को छोड़कर सभी तत्वों का गुणनफल रखेगा। और एक प्रतिबंध है कि हम इस समस्या में भाग ऑपरेटर का उपयोग नहीं कर सकते।

यदि हम भाग ऑपरेशन का उपयोग कर सकते हैं, तो हम इस समस्या को आसानी से हल कर सकते हैं, सभी तत्वों का गुणनफल प्राप्त करके, फिर पहले ऐरे के i-th तत्व से भाग देकर दूसरे ऐरे के i-th स्थान में स्टोर कर सकते हैं।

यहां हम दो अलग ऐरे बनाकर हल कर रहे हैं - left और right। left[i] में array[i] के बाईं ओर के सभी तत्वों का गुणनफल होगा (array[i] को छोड़कर), और right[i] में arr[i] के दाईं ओर के सभी तत्वों का गुणनफल होगा (arr[i] को छोड़कर)। यह समाधान O(n) समय लेगा। लेकिन यह अतिरिक्त स्पेस लेगा।

एल्गोरिदम

productArray(arr, n)

begin
    आकार n के दो ऐरे left और right परिभाषित करें
    आकार n का res नामक एक ऐरे परिभाषित करें
    left का पहला तत्व और right का अंतिम तत्व 1 सेट करें
    for i in range 1 to n, do
        left[i] = left[i-1] * arr[i-1]
    done
    for i in range n-1 down to 1, do
        right[i] = right[i+1] * arr[i+1]
    done
    for i in range 1 to n, do
        res[i] = left[i] * right[i];
    done
    return res
end

उदाहरण

#include <iostream>
using namespace std;

void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

void productArray(int arr[], int product[], int n) {
    // left right ऐरे बनाएं
    int *left = new int[n];
    int *right = new int[n];
    
    // left[] के पहले तत्व और right[] के अंतिम तत्व को 1 सेट करें
    left[0] = right[n-1] = 1;
    
    for (int i = 1; i < n; i++) {
        left[i] = left[i-1] * arr[i-1];
    }
    
    for (int i = n-2; i >= 0; i--) {
        right[i] = right[i+1] * arr[i+1];
    }
    
    // left और right ऐरे का उपयोग करके प्रोडक्ट ऐरे प्राप्त करें
    for (int i = 0; i < n; i++) {
        product[i] = left[i] * right[i];
    }
    
    delete[] left;
    delete[] right;
}

int main() {
    int myArr[7] = {5, 4, 7, 6, 9, 2, 3};
    int resArr[7];
    cout << "Initial Array: ";
    printArray(myArr, 7);
    productArray(myArr, resArr, 7);
    cout << "Final Array: ";
    printArray(resArr, 7);
    return 0;
}

आउटपुट

Initial Array: 5 4 7 6 9 2 3
Final Array: 9072 11340 6480 7560 5040 22680 15120
  1. C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल

    कुछ एलिमेंट्स के साथ एक इंटीजर ऐरे arr[] दिया गया है, कार्य उस ऐरे की सभी अभाज्य संख्याओं का गुणनफल निकालना है। अभाज्य संख्याएं वे संख्याएं होती हैं जो या तो 1 से विभाज्य होती हैं या स्वयं संख्या से, या एक अभाज्य संख्या वह संख्या है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख्या से विभाज्य नहीं ह

  1. - C++ में सॉर्टिंग

    इस सेक्शन में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिदम कैसे निष्पादित करें। एक सॉर्टेड ऐरे एक ऐरे है जिसमें प्रत्येक एलिमेंट किसी क्रम में सॉर्टेड होते हैं जैसे न्यूमेरिकल, अल्फाबेटिकल आदि। एक न्यूमेरिकल ऐरे को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज स

  1. - C++ STL का उपयोग करके ऐरे का गुणनफल

    यह ऐरे गुणनफल ज्ञात करने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin ऐरे के मान इनिशियलाइज़ करें। ऐरे का गुणनफल लौटाने के लिए उपयोगकर्ता परिभाषित फंक्शन accumulate को कॉल करें। समाधान प्रिंट करें। End. उदाहरण कोड #include <iostream> #include <numeric> using names