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

C++ में निरपेक्ष अंतर के न्यूनतम योग वाला एरे तत्व


यह प्रोग्राम दिए गए एरे के न्यूनतम निरपेक्ष अंतर को खोजने के लिए है जहां हमारे पास एक एरे है जिसमें विशिष्ट तत्व हैं। इस अवधारणा को बेहतर ढंग से सीखने के लिए, आइए आवश्यक चीजों को दोहराएं:

एरे (Array) समान डेटा प्रकार के तत्वों का एक कंटेनर है। एरे की लंबाई पूर्वनिर्धारित होनी चाहिए।

निरपेक्ष अंतर (Absolute difference) दो संख्याओं के अंतर का निरपेक्ष मान है यानी अंतर हमेशा धनात्मक होगा, ऋणात्मक मान धनात्मक में बदल जाएंगे।

प्रत्येक तत्व के न्यूनतम निरपेक्ष अंतर के योग को न्यूनतम निरपेक्ष अंतर सूत्र का उपयोग करके खोजना होगा:

न्यूनतम निरपेक्ष अंतर (a) = min(abs(a – arr[j]));

जहां 1 ≤ j ≤ n और j != i, abs निरपेक्ष मान है।

इनपुट: arr = {1, 3, 9, 3, 6} आउटपुट: 8

व्याख्या

इष्टतम समाधान x = 3 चुनना है, जो योग उत्पन्न करता है

|1 – 3| + |3 – 3| + |9 – 3| + |3 – 3| = 2 + 0 + 6 + 0 = 8

एल्गोरिदम

  • दिए गए इनपुट एरे को सॉर्ट किया जाता है।

  • एरे के पहले तत्व के लिए न्यूनतम निरपेक्ष अंतर, दूसरे एरे तत्व का उपयोग करके गणना की जाती है।

  • अंतिम एरे तत्व के लिए न्यूनतम निरपेक्ष अंतर, अंतिम से दूसरे एरे तत्व का उपयोग करके गणना की जाती है।

  • इंडेक्स i पर मौजूद अन्य एरे तत्वों के लिए न्यूनतम निरपेक्ष अंतर की गणना द्वारा की जाती है:

  • minAbsDiff = min( abs(arr[i] – arr[i-1]), abs(arr[i] – arr[i+1]) )।

उदाहरण

#include <iostream>
#include <algorithm>
using namespace std;

int abs_sum(int a[], int len);

int main() {
    int a[] = {1, 3, 9, 3, 6};
    int n, i;
    n = 5;
    sort(a, a + n);
    int sum = 0;
    sum += abs(a[0] - a[1]);
    sum += abs(a[n-1] - a[n-2]);
    for (int i = 1; i < n-1; i++) {
        sum += min(abs(a[i] - a[i-1]), abs(a[i] - a[i+1]));
    }
    cout << "The element with minimum sum of absolute differences is : " << sum;
    return 0;
}

आउटपुट

The element with minimum sum of absolute differences is : 8

  1. - C++ STL में सरणी का योग (Array Sum)

    सरणी योग ज्ञात करने के तरीके 1. शास्त्रीय विधि (लूप) सभी तत्वों पर पुनरावृति करके योग निकालें। int arr[] = {2, 5, 7, 8, 2, 6, 9}; int n = 7, sum = 0; for (int i = 0; i < n; i++) sum += arr[i]; // Output: 39 2. accumulate() फंक्शन ( हेडर) STL का बिल्ट-इन फंक्शन। #include <numeric> int su

  1. - C++ में निरपेक्ष अंतर के न्यूनतम योग वाला एरे तत्व

    यह प्रोग्राम दिए गए एरे के न्यूनतम निरपेक्ष अंतर को खोजने के लिए है जहां हमारे पास एक एरे है जिसमें विशिष्ट तत्व हैं। इस अवधारणा को बेहतर ढंग से सीखने के लिए, आइए आवश्यक चीजों को दोहराएं: एरे (Array) समान डेटा प्रकार के तत्वों का एक कंटेनर है। एरे की लंबाई पूर्वनिर्धारित होनी चाहिए। निरपेक्ष अंतर (

  1. - C++ सम एरे पहेली (Sum Array Puzzle)

    एरे (Array) एक डेटा संरचना है जो समान डेटा प्रकार के कई तत्वों को संग्रहीत करती है। यह एक बार में मानों का पूरा सेट संग्रहीत कर सकता है। लेकिन इसकी लंबाई पहले से परिभाषित होनी चाहिए। इस सम एरे पहेली में, हमें एक निश्चित आकार का एरे A1 दिया जाता है, मान लीजिए n। इस पहेली को हल करने के लिए, हम S1 नाम