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

C++ में K तत्वों को रखें ताकि न्यूनतम दूरी अधिकतम हो


इस समस्या में, हमें एक ही रेखा पर स्थित n पॉइंट्स का एक ऐरे दिया गया है। हमारा कार्य ऐरे के k तत्वों को इस तरह रखना है कि उनके बीच की न्यूनतम दूरी अधिकतम हो।

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

इनपुट - ऐरे = {}

आउटपुट -

इस समस्या को हल करने के लिए, हमें अधिकतम संभव न्यूनतम दूरी ढूंढनी होगी। ऐसी समस्या के लिए पहले हमें दिए गए ऐरे को सॉर्ट करना होगा और फिर बाइनरी सर्च करना होगा जब तक कि हमें मिड पर समाधान न मिल जाए।

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;

bool canGenerateResult(int mid, int arr[], int n, int k) {
    int pos = arr[0];
    int elements = 1;
    for (int i = 1; i < n; i++) {
        if (arr[i] - pos >= mid) {
            pos = arr[i];
            elements++;
            if (elements == k)
                return true;
        }
    }
    return 0;
}

int maxMinDist(int arr[], int n, int k) {
    sort(arr, arr + n);
    int res = -1;
    int left = arr[0], right = arr[n-1];
    while (left < right) {
        int mid = (left + right) / 2;
        if (canGenerateResult(mid, arr, n, k)) {
            res = max(res, mid);
            left = mid + 1;
        } else
            right = mid;
    }
    return res;
}

int main() {
    int arr[] = {3, 5, 6, 9, 1, 8};
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 3;
    cout << "अधिकतम न्यूनतम दूरी है : " << maxMinDist(arr, n, k);
    return 0;
}

आउटपुट

अधिकतम न्यूनतम दूरी है : 4
  1. सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

    इस समस्या में, हमें एक सर्कुलर ऐरे cirArr[] दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में सर्कुलर ऐरे में अधिकतम योग ढूंढे जहाँ कोई दो आसन्न तत्व न हों।समस्या विवरणसर्कुलर ऐरे के लिए, हमें ऐरे के तत्वों का अधिकतम योग ढूंढना है जहाँ आसन्न तत्वों को नहीं लिया जा सकता, यानी हमें वैकल्पिक तत

  1. - C++ में सरणी को अच्छा बनाने के लिए हटाए जाने वाले न्यूनतम तत्व

    समस्या कथन एक सरणी arr दी गई है, सरणी को अच्छा बनाने के लिए हटाए जाने वाले न्यूनतम तत्वों की संख्या ढूंढें। एक अनुक्रम a1, a2, a3...an को अच्छा कहा जाता है यदि प्रत्येक तत्व a[i] के लिए, एक तत्व a[j] (i ≠ j) मौजूद होता है जैसे कि a[i] + a[j] 2 की घात हो। arr1[] = {1, 1, 7, 1, 5} उपरोक्त सरणी में यदि

  1. - C++ का उपयोग करके सरणी में ऐसा तत्व खोजें जिससे सभी तत्व विभाज्य हों

    मान लीजिए हमारे पास कुछ तत्वों के साथ एक सरणी A है। हमें A से एक ऐसा तत्व ढूंढना है जिससे सभी तत्व इससे विभाज्य हों। मान लीजिए A = [15, 21, 69, 33, 3, 72, 81] है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हैं। इस समस्या को हल करने के लिए, हम A में सबसे छोटी संख्या लेंगे, फिर जांचेंगे कि क्य