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

सी ++ में एक उत्पाद सरणी पहेली (ओ (1) स्पेस)?

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

यदि हम विभाजन, संचालन का उपयोग कर सकते हैं, तो हम सभी तत्वों का उत्पाद प्राप्त करके इस समस्या को आसानी से हल कर सकते हैं, फिर पहले सरणी के i-वें तत्व को विभाजित करें और इसे दूसरे सरणी के i-वें स्थान पर संग्रहीत करें।

यहां हम एक अस्थायी चर लेकर हल कर रहे हैं, जो कि बाएं हिस्से और दाएं हिस्से का उत्पाद ढूंढ रहा है। यह मान अंतिम सरणी में रखा जाएगा। तो यह अतिरिक्त जगह नहीं लेगा।

एल्गोरिदम

productArray(arr, n)

begin
   define an array called res of size n
   fill the res array with 1
   temp := 1
   for i in range 1 to n, do
      res[i] := temp;
      temp := temp * arr[i]
   done
   for i in range n-1 down to 0, do
      res[i] = res[i] * temp
      temp := temp * arr[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) {
   int temp = 1;
   for(int i = 0; i<n; i++) {
      product[i] = 1; //set all elements of product as 1
   }
   for(int i = 0; i < n; i++) { //temp variable will hold product of elements on left excluding arr[i]
      product[i] = temp;
      temp *= arr[i];
   }
   temp = 1;
   for(int i = n - 1; i >= 0; i--) { //temp variable will hold product of elements on right excluding arr[i]
      product[i] *= temp;
      temp *= arr[i];}
   }
}
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);
}

आउटपुट

Initial Array: 5 4 7 6 9 2 3
Final Array: 9072 11340 6480 7560 5040 22680 15120

  1. सी ++ में सरणी के उत्पाद में अनुगामी शून्य की संख्या की गणना करें

    हमें आकार N के धनात्मक पूर्णांकों की एक सरणी Arr[] दी गई है। लक्ष्य सरणी के सभी तत्वों के गुणनफल में मौजूद अनुगामी शून्यों की संख्या की गणना करना है। हम प्रत्येक संख्या के गुणनखंडों को गिनकर ऐसा करेंगे। हम 2 और 5 को प्रत्येक संख्या के गुणनखंड के रूप में गिनेंगे क्योंकि 2 और 5 का गुणनफल 10 है जो 1 अ

  1. सी ++ में सरणी में एक ट्रिपलेट (आकार 3 के बाद के बाद) का अधिकतम उत्पाद

    इस ट्यूटोरियल में, हम सरणी में एक ट्रिपलेट (आकार 3 के बाद के) के अधिकतम उत्पाद को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें पूर्णांकों की एक सरणी प्रदान की जाएगी। हमारा काम अधिकतम उत्पाद के साथ उस सरणी में तत्वों के ट्रिपल को ढूंढना है उदाहरण #include <bits/stdc++.h> using name

  1. C++ में किसी सरणी में सभी अभाज्य संख्याओं का गुणनफल

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