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

अधिकतम योग ज्ञात करने के लिए संख्या को 3 भागों में तोड़ें


एक नंबर दिया गया है। हमारा काम संख्या को तीन बार n/2, n/3, और n/4 से तोड़ना है और संख्या को तीन भागों में विभाजित करके अधिकतम योग प्राप्त करना है।

उदाहरण के लिए, 50 को {25, 16, 12} में विभाजित किया जा सकता है, अब प्रत्येक सेट {25, 16, 12} को फिर से तीन भागों में विभाजित करें, और इसी तरह आगे भी। भाग को 3 बार तक पूरा करने के बाद, हम योग की गणना करके उनमें से अधिकतम का पता लगाएंगे।

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

इनपुट और आउटपुट

Input:
Let the given number is 12.
Output:
The answer is 13.
At first divide the 12 as (12/2 + 12/3 + 12/4) = 6 + 4 + 3 = 13.
now divide 6 into three parts (6/2 + 6/3 + 6/4) = 3 + 2 + 1 = 6.
If we divide the 4 and 3, we can get maximum 4 from them. From all values the maximum is 13.

एल्गोरिदम

maxBreakSum(n)

इनपुट: दी गई संख्या।

आउटपुट: तोड़ने के बाद अधिकतम राशि।

Begin
   define sums array of size n+1
   sums[0] := 0, sums[1] := 1

   for i in range 2 to n, do
      sum[i] := maximum of i and (sums[i/2] + sums[i/3] + sums[i/d])
   done
   return sums[n]
End

उदाहरण

#include<iostream>
#define MAX 1000000
using namespace std;

int max(int a, int b) {
   return (a>b)?a:b;
}

int maxBreakSum(int n) {
   int sumArr[n+1];
   sumArr[0] = 0, sumArr[1] = 1;    //for number 0 and 1, the maximum sum is 0 and 1 respectively

   for (int i=2; i<=n; i++)    //for number 2 to n find the sum list
      sumArr[i] = max(sumArr[i/2] + sumArr[i/3] + sumArr[i/4], i);    //divide number by 2, 3, 4
   return sumArr[n];
}

int main() {
   int n;
   cout << "Enter a number: "; cin >> n;
   cout << "Maximum sum after breaking: " << maxBreakSum(n);
}

आउटपुट

Enter a number: 12
Maximum sum after breaking: 13

  1. C++ प्रोग्राम किसी संख्या के सम गुणनखंडों का योग ज्ञात करने के लिए?

    इस भाग में हम देखेंगे कि कैसे हम किसी संख्या के सभी सम अभाज्य गुणनखंडों का योग कुशल तरीके से प्राप्त कर सकते हैं। एक संख्या है मान लीजिए n =480, हमें इसका पूरा गुणनखंड प्राप्त करना है। 480 के अभाज्य गुणनखंड 2, 2, 2, 2, 2, 3, 5 हैं। सभी सम गुणनखंडों का योग 2+2+2+2+2 =10 है। इस समस्या को हल करने के लि

  1. पायथन में एक स्ट्रिंग को अद्वितीय सबस्ट्रिंग की अधिकतम संख्या में विभाजित करने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग है, हमें अधिकतम संख्या में अद्वितीय सबस्ट्रिंग का पता लगाना है, जिसमें दिए गए स्ट्रिंग को विभाजित किया जा सकता है। हम स्ट्रिंग s को गैर-रिक्त सबस्ट्रिंग की किसी भी सूची में विभाजित कर सकते हैं जैसे कि सबस्ट्रिंग का संयोजन मूल स्ट्रिंग बनाता है। लेकिन हमें सबस्ट्रिं

  1. पायथन प्रोग्राम में किसी संख्या के सम गुणनखंडों का योग ज्ञात करें

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक संख्या दी गई है, हमें संख्या के सभी सम गुणनखंडों का योग प्रदर्शित करना होगा। दृष्टिकोण हम जाँचते हैं कि क्या संख्या विषम है, फिर कोई सम गुणनखंड नहीं हैं, इसलिए 0 लौटाएँ। यदि संख्या सम है, तो हम गणना के माध्