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

सी ++ में दिए गए सरणी में सबरे का मतलब खोजें

इस समस्या में, हमें n आकार का एक सरणी arr[] और एक पूर्णांक m दिया जाता है। हमारा कार्य किसी दिए गए सरणी में सबअरे का माध्य ज्ञात करना है।

कोड विवरण - यहां, हमें सरणी के माध्य को आकार m के उप-सरणी के माध्य के रूप में खोजने की आवश्यकता है।

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

इनपुट

arr[] = {2, 5, 3, 6, 1}, m = 3

आउटपुट

3.78

स्पष्टीकरण

All subarrays of size m are {2, 5, 3}, {5, 3, 6}, {3, 6, 1}
Means of means of subarray of size m,

$$(\बाएं(\frac{2+5+3}{3}\right)+\left(\frac{5+3+6}{3}\right)+\left(\frac{3+6 +1}{3}\दाएं))/3=\बाएं(\frac{10}{3}\दाएं)+\बाएं(\frac{14}{3}\दाएं)+\बाएं(\frac{10 }{3}\दाएं)/3=34/3/3=3.78$$

समाधान दृष्टिकोण

समस्या का एक सरल समाधान m आकार के सभी उप-सरणियों को खोजना और उनके साधनों को खोजना है। फिर इन सभी साधनों को जोड़ें और इसे उप-सरणियों की संख्या से विभाजित करें। और परिणाम लौटाएं।

स्लाइडिंग विंडो एल्गोरिदम का उपयोग करके एक और अधिक कुशल दृष्टिकोण है। हम इंडेक्स 0 से शुरू होने वाले आकार एम की खोज पाएंगे। प्रत्येक विंडो के लिए माध्य और योग खोजें। और अंत में योग को विंडो काउंट से विभाजित करें और मान वापस करें।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#include <iostream>
using namespace std;
float calcMeanOfSubarrayMeans(int arr[], int n, int m) {
   float meanSum = 0, windowSum = 0;
   for (int i = 0; i < m; i++)
      windowSum += arr[i];
      meanSum += (windowSum / m);
   for (int i = 0; i < n; i++) {
      windowSum = windowSum - arr[i - m] + arr[i];
      meanSum += (windowSum / m);
   }
   int windowCount = n - m + 1;
   return (meanSum / windowCount);
}
int main() {
   int arr[] = { 4, 1, 7, 9, 2, 5, 3};
   int n = sizeof(arr) / sizeof(arr[0]);
   int m = 3;
   cout<<"The mean of subarray means is "<<calcMeanOfSubarrayMeans(arr, n, m);
   return 0;
}

आउटपुट

The mean of subarray means is 8.06667

  1. सी ++ में एक सरणी में स्थानीय मिनीमा खोजें

    मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। हमें सरणी का स्थानीय न्यूनतम ज्ञात करना है। सरणी ए में, तत्व ए [एक्स] को स्थानीय मिनीमा कहा जाता है यदि यह अपने दोनों पड़ोसियों से कम या बराबर है। कोने के तत्वों के लिए केवल एक पड़ोसी पर विचार किया जाएगा। और यदि एक से अधिक स्थानीय मिनीमा उपलब्ध है

  1. C++ में एक मैट्रिक्स का माध्य सदिश ज्ञात कीजिए

    मान लीजिए हमारे पास M x N कोटि का एक आव्यूह है, हमें दिए गए आव्यूह का माध्य सदिश ज्ञात करना है। तो अगर मैट्रिक्स की तरह है - 1 2 3 4 5 6 7 8 9 तब माध्य सदिश [4, 5, 6] है क्योंकि प्रत्येक स्तंभ का माध्य (1 + 4 + 7)/3 =4, (2 + 5 + 8)/3 =5, और (3 + 6 + 9) है। )/3 =6 उदाहरण से, हम आसानी से पहचान

  1. C++ में दिए गए सरणी के तत्वों के भाज्य का GCD ज्ञात कीजिए

    मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी ए है। हमें सरणी के सभी तत्वों के भाज्य का GCD ज्ञात करना है। मान लीजिए कि तत्व {3, 4, 8, 6} हैं, तो भाज्य का GCD 6 है। यहाँ हम ट्रिक देखेंगे। चूँकि दो संख्याओं का GCD वह सबसे बड़ी संख्या है, जो दोनों संख्याओं को विभाजित करती है, तो दो संख्याओं के भाज्य