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

C++ का उपयोग करके डिलीवर की जाने वाली वस्तुओं की न्यूनतम संख्या।

समस्या कथन

आकार की एक सरणी को देखते हुए, एन बाल्टी का प्रतिनिधित्व करता है, प्रत्येक सरणी सूचकांक जिसमें आइटम होते हैं। के दौरों को देखते हुए जिसमें सभी वस्तुओं की डिलीवरी की आवश्यकता है। 1 टूर में केवल एक बाल्टी से आइटम लेने की अनुमति है। कार्य प्रति टूर डिलीवर करने के लिए आवश्यक वस्तुओं की न्यूनतम संख्या बताना है ताकि सभी आइटम K टूर्स के भीतर डिलीवर किए जा सकें।

अगर आइटम के साथ 5 बाल्टी हैं ={1, 3, 5, 7, 9} और 10 टूर तो हम एक बार में 3 आइटम डिलीवर करके प्रति टूर 3 आइटम डिलीवर कर सकते हैं,

  • पहली बाल्टी का आकार 1 है इसलिए आवश्यक यात्राओं की संख्या =1

  • दूसरी बाल्टी का आकार 3 है इसलिए आवश्यक यात्राओं की संख्या =1

  • तीसरी बाल्टी का आकार 5 है इसलिए आवश्यक यात्राओं की संख्या =2 (3 + 2 आइटम प्रति टूर)

  • चौथी बाल्टी का आकार 7 है इसलिए आवश्यक यात्राओं की संख्या =3 (3 + 3 + 1 आइटम प्रति टूर)

  • 5वीं बाल्टी का आकार 9 है इसलिए आवश्यक यात्राओं की संख्या =3 (3 + 3 + 3 आइटम प्रति टूर)

यात्राओं की कुल संख्या =10

एल्गोरिदम

1. find the minimum number of items to be distributed per delivery
2. iterate from 1 to the maximum value of items in a bucket and calculate the number of tours required for each bucket and find the total number of tours for complete delivery
3. The first such value with tours less than or equals K gives the required number

उदाहरण

#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[i] % 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 को देखते हुए। कार्य N के बीच में हटाए जाने वाले तत्वों की न्यूनतम संख्या को खोजना है ताकि शेष तत्वों से प्राप्त XOR अधिकतम हो। एल्गोरिदम 1. If n is 1 or 2 then there is no need to remove any element. Hence answer is zero 2. Find a number which is power of 2 and greater than o

  1. C++ का उपयोग करके माध्यिका को x के बराबर बनाने के लिए जोड़ने के लिए तत्वों की न्यूनतम संख्या।

    समस्या कथन आकार n और तत्व x की एक सरणी गिरफ्तारी को देखते हुए, कार्य औसत को 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 है। हम एक संख्या लेंगे और न्यून