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

C++ में वितरित किए जाने वाले न्यूनतम आइटम

समस्या कथन

आकार N की एक सरणी दी गई है जो बाल्टियों (buckets) को दर्शाती है, प्रत्येक सरणी इंडेक्स में आइटम हैं। K टूर दिए गए हैं जिनके भीतर सभी आइटम वितरित किए जाने हैं। 1 टूर में केवल एक बाल्टी से आइटम लेना अनुमत है। कार्य प्रति टूर वितरित किए जाने वाले न्यूनतम आइटम की संख्या बताना है ताकि सभी आइटम K टूर के भीतर वितरित किए जा सकें।

यदि 5 बाल्टियों में आइटम = {1, 3, 5, 7, 9} हैं और 10 टूर हैं, तो हम प्रति टूर 3 आइटम वितरित कर सकते हैं।

एल्गोरिदम

1. प्रति डिलीवरी वितरित किए जाने वाले न्यूनतम आइटम ढूंढें
2. 1 से बाल्टी में अधिकतम आइटम मान तक पुनरावृति करें और प्रत्येक बाल्टी के लिए आवश्यक टूर की गणना करें और कुल टूर ढूंढें
3. पहला ऐसा मान जिसका टूर K से कम या बराबर हो, आवश्यक संख्या देता है

C++ उदाहरण

#include <iostream>
#include <climits>
#include <cmath>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;

int minItemsDeliveried(int *arr, int n, int k) {
    int maxElement = INT_MIN;
    for (int i = 0; i < n; ++i)
        maxElement = max(maxElement, arr[i]);
    
    for (int i = 1; i < maxElement + 1; ++i) {
        int tours = 0;
        for (int j = 0; j < n; ++j) {
            if (arr[j] % i == 0)
                tours += arr[j] / i;
            else
                tours += floor(arr[j] / i) + 1;
        }
        if (tours <= k) return i;
    }
    return 1;
}

int main() {
    int arr[] = {1, 3, 5, 7, 9};
    int k = 10;
    cout << "Minimum items to be delivered = " << minItemsDeliveried(arr, SIZE(arr), k) << endl;
    return 0;
}

आउटपुट

Minimum items to be delivered = 3
  1. - C++ में XOR को अधिकतम बनाने के लिए हटाए जाने वाले न्यूनतम तत्व

    समस्या कथन एक संख्या N दी गई है। 1 से N के बीच के न्यूनतम तत्वों की संख्या ढूंढें जिन्हें हटाया जाए ताकि शेष तत्वों से प्राप्त XOR अधिकतम हो। एल्गोरिदम 1. यदि n 1 या 2 है तो किसी तत्व को हटाने की आवश्यकता नहीं है। उत्तर शून्य है। 2. एक संख्या ढूंढें जो 2 की घात है और n से बड़ी या बराबर है। इसे next

  1. - C++ में माध्यिका को x के बराबर बनाने के लिए जोड़े जाने वाले न्यूनतम तत्व

    समस्या कथन आकार n की एक सरणी arr और तत्व x दिया गया है, सरणी में जोड़े जाने वाले न्यूनतम तत्वों की संख्या ढूंढें ताकि माध्यिका (median) x के बराबर हो जाए। लंबाई n की सरणी में माध्यिका वह तत्व है जो तत्वों को गैर-घटते क्रम में सॉर्ट करने के बाद स्थिति (n-1)/2 पर आता है। उदाहरण के लिए, नीचे दी गई सरणी

  1. - C++ में किसी संख्या के गुणनखंडों का न्यूनतम योग ढूंढना

    यहां हम देखेंगे कि किसी दी गई संख्या के गुणनखंडों का न्यूनतम योग कैसे प्राप्त करें। मान लीजिए एक संख्या 12 है। हम इसे अलग-अलग तरीकों से गुणनखंडित कर सकते हैं: 12 = 12 × 1 (12 + 1 = 13) 12 = 2 × 6 (2 + 6 = 8) 12 = 3 × 4 (3 + 4 = 7) 12 = 2 × 2 × 3 (2 + 2 + 3 = 7) न्यूनतम योग 7 है। हम