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

C में k छात्रों के बीच समान रूप से वितरित की जाने वाली चॉकलेट की अधिकतम संख्या


हमें लगातार बक्सों में मौजूद चॉकलेट की संख्या एक सरणी के रूप में दी गई है और एक संख्या k जो उन छात्रों की संख्या दर्शाती है जिनके बीच ये चॉकलेट वितरित की जाएंगी। यहां कार्य लगातार बक्सों को चुनना है ताकि उनमें मौजूद चॉकलेट का योग k छात्रों के बीच समान रूप से वितरित किया जा सके। साथ ही हमें यह सुनिश्चित करना है कि चॉकलेट की संख्या अधिकतम हो।

इसके लिए हम सरणी को बाएं से दाएं पार करेंगे और चॉकलेट की संख्या को जोड़ना शुरू करेंगे और योग को k से विभाजित करेंगे। यदि यह शेषफल 0 के साथ पूरी तरह विभाजित होता है तो इस योग को एक चर में संग्रहीत करें। जैसे-जैसे हम आगे बढ़ते हैं, इस प्रक्रिया को तब तक दोहराते हैं जब तक हमें ऐसा अधिकतम योग प्राप्त नहीं हो जाता। समस्या k से विभाज्य अधिकतम योग उपसरणी ढूंढने की है।

इनपुट

Choco[] = { 1, 2, 4, 5, 2, 8, 3, 5 } k = 3

आउटपुट

k छात्रों के बीच समान रूप से वितरित की जाने वाली चॉकलेट की अधिकतम संख्या: 5

व्याख्या

अधिकतम योग उपसरणी है { 5, 2, 8 }। चॉकलेट का योग 15 है। समान रूप से विभाजित करने पर, सभी 3 छात्रों को मिलने वाली अधिकतम चॉकलेट 5 है।

नोट - बक्से लगातार हैं और सूचकांक हैं { 3, 4, 5 }

इनपुट

Choco[] = { 2, 3, 7, 5, 4, 8, 2, 6 } k = 5

आउटपुट

k छात्रों के बीच समान रूप से वितरित की जाने वाली चॉकलेट की अधिकतम संख्या: 7

व्याख्या

अधिकतम योग उपसरणी है { 3, 7, 5, 4, 8, 2, 6 }। चॉकलेट का योग 35 है। समान रूप से विभाजित करने पर, सभी 5 छात्रों को मिलने वाली अधिकतम चॉकलेट 7 है।

उपयोग किया गया दृष्टिकोण

  • हम एक पूर्णांक सरणी arr[] लेते हैं जिसमें लगातार कंटेनरों में चॉकलेट की संख्या होती है।

  • तत्वों की संख्या 'n' बक्सों की संख्या दर्शाती है।

  • छात्रों की संख्या 'k' को इनपुट के रूप में लें।

  • फ़ंक्शन maxChocolate(int arr[], int n, int k), तीन तर्क लेता है - सरणी, उसका आकार और छात्रों की संख्या k।

  • हम फॉर लूप का उपयोग करके arr[] को शुरुआत से पार करना शुरू करेंगे।

  • दो चर sum और maxSum लें। Sum उपसरणी के लगातार तत्वों का योग संग्रहीत करता है।

  • maxSum का उपयोग अब तक मिले अधिकतम योग को संग्रहीत करने के लिए किया जाता है।

  • नेस्टेड फॉर लूप के अंदर तत्वों को जोड़ते रहें और जांचें कि क्या sum % k शेषफल 0 देता है। साथ ही यदि यह योग > maxSum है, तो maxSum अद्यतन करें।

  • अंत में maxSum में k छात्रों के बीच समान रूप से विभाजित की जा सकने वाली चॉकलेट की अधिकतम संख्या होगी।

  • परिणाम को maxSum / k के रूप में लौटाएं जो प्रत्येक छात्र को मिलने वाली चॉकलेट की संख्या है।

उदाहरण

#include <stdio.h> // k छात्रों के बीच समान रूप से वितरित की जाने वाली // चॉकलेट की अधिकतम संख्या ढूंढने के लिए int maxChocolates(int arr[], int n, int k){     int sum;     int maxSum = 0;     for(int i = 0; i < n; i++){         sum = 0;         for(int j = i; j < n; j++){             sum += arr[j];             if(sum % k == 0 && sum > maxSum)                 maxSum = sum;         }     }     // 'k' छात्रों के बीच समान रूप से वितरित     return (maxSum / k); } int main(){     int arr[] = { 2, 7, 6, 1, 4, 5, 5, 3 };     int n = 8;     int k = 3;     printf("k छात्रों के बीच समान रूप से वितरित की जाने वाली चॉकलेट की अधिकतम संख्या: %d", maxChocolates(arr, n, k));     return 0; }

आउटपुट

उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:

k छात्रों के बीच समान रूप से वितरित की जाने वाली चॉकलेट की अधिकतम संख्या: 11
  1. C++ में अधिकतम मोड़ों वाला पथ लंबाई C++ में अधिकतम मोड़ों वाला पथ लंबाई

    एक समस्या को हल करने के लिए जिसमें हमें एक बाइनरी ट्री दिया गया है। अब हमें अधिकतम संख्या में मोड़ों वाला पथ खोजने की आवश्यकता है। यानी, एक मोड़ तब माना जाता है जब पथ की दिशा बाएं से दाएं या इसके विपरीत बदलती है, उदाहरण के लिएइनपुट -आउटपुट -6अब इस दृष्टिकोण में, हम ट्री को पार करेंगे और पिछली गतिविध

  1. - C++ में द्विभाजित ग्राफ में अधिकतम एज की संख्या

    समस्या कथन एक पूर्णांक N दिया गया है जो शीर्षों की संख्या दर्शाता है। कार्य N शीर्षों के द्विभाजित ग्राफ में संभव अधिकतम एज की संख्या ढूंढना है। द्विभाजित ग्राफ एक द्विभाजित ग्राफ वह है जिसमें शीर्षों के 2 सेट होते हैं। सेट ऐसे होते हैं कि एक ही सेट के शीर्ष कभी भी उनके बीच एज साझा नहीं करेंगे। उ

  1. - पायथन प्रोग्राम: तीन नंबर्स में अधिकतम

    तीन नंबर a, b और c दिए गए हैं, हमारा कार्य दिए गए नंबरों में से अधिकतम एलिमेंट ढूंढना है।उदाहरणInput: a = 2, b = 4, c = 3 Output: 4एल्गोरिदमचरण 1: तीन यूजर इनपुट नंबर इनपुट करें। चरण 2: तीन नंबर्स को लिस्ट में जोड़ें। चरण 3: सबसे बड़ी संख्या खोजने के लिए max() फंक्शन का उपयोग करें max(lst)। चरण 4: औ