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

C++ में पूर्णांक विभाजन


मान लीजिए हमारे पास एक धनात्मक पूर्णांक n है, हमें इसे कम से कम दो धनात्मक संख्याओं के योग में विभाजित करना है और उन पूर्णांकों के गुणनफल को अधिकतम करना है। हमें अधिकतम गुणनफल ढूंढना है जो हम प्राप्त कर सकते हैं।

उदाहरण के लिए, यदि संख्या 10 है, तो उत्तर 36 होगा, जैसे 10 = 3 + 3 + 4, 3 * 3 * 4 = 36।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • solve() नामक एक विधि परिभाषित करें, यह n, सरणी dp और flag लेगा
  • यदि n = 0, तो 1 लौटाएं
  • यदि dp[n] -1 नहीं है, तो dp[n] लौटाएं
  • end := n - 1 जब flag सेट हो, अन्यथा n
  • ret := 0
  • i को 1 से end तक लूप करें
    • ret := ret और i * solve(n - i, dp, गलत) का अधिकतम
  • dp[n] := ret सेट करें और लौटाएं
  • मुख्य विधि से, आकार n + 1 की एक सरणी dp बनाएं और इसे -1 से भरें
  • solve(n, dp) लौटाएं

उदाहरण (C++)

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int solve(int n, vector <int>& dp, bool flag = true){       if(n == 0) return 1;       if(dp[n] != -1) return dp[n];       int end = flag? n - 1: n;       int ret = 0;       for(int i = 1; i <= end; i++){          ret = max(ret, i * solve(n - i, dp, false));       }       return dp[n] = ret;    }    int integerBreak(int n) {       vector <int>dp(n + 1, -1);       return solve(n, dp);    } }; main(){    Solution ob;    cout << (ob.integerBreak(10)); }

इनपुट

10

आउटपुट

36

  1. C++ में अनसाइन्ड इंटीजर के लिए रीस्टोरिंग डिवीजन एल्गोरिथम C++ में अनसाइन्ड इंटीजर के लिए रीस्टोरिंग डिवीजन एल्गोरिथम

    एक अनसाइन्ड इंटीजर को डिवीजन एल्गोरिथम का उपयोग करके विभाजित करने पर चर्चा करें। कुछ डिवीजन एल्गोरिथम कागज पर लागू होते हैं, और अन्य डिजिटल सर्किट पर लागू होते हैं। डिवीजन एल्गोरिथम दो प्रकार के होते हैं: स्लो डिवीजन एल्गोरिथम और फास्ट डिवीजन एल्गोरिथम। स्लो डिवीजन एल्गोरिथम में रीस्टोरिंग, नॉन-परफ

  1. C++ प्रोग्राम: पूर्णांक के अंकों को ज़ूम (बड़ा) करके प्रिंट करना C++ प्रोग्राम: पूर्णांक के अंकों को ज़ूम (बड़ा) करके प्रिंट करना

    इस प्रोग्राम में हम देखेंगे कि C++ में पूर्णांक के अंकों को कैसे ज़ूम (बड़े आकार में) प्रिंट किया जाए। ज़ूमिंग का अर्थ है संख्याओं को अन्य कैरेक्टर्स का उपयोग करके बड़े रूप में प्रिंट करना। तर्क सरल है, लेकिन हमें 0 से 9 तक प्रत्येक अंक को बड़े रूप में एक-एक करके बनाना होगा। उदाहरण कोड #include &l

  1. - C++ इंटीजर कॉन्स्टेंट्स क्या हैं?

    इंटीजर कॉन्स्टेंट्स कॉन्स्टेंट डेटा एलिमेंट्स हैं जिनमें कोई भिन्नात्मक भाग या एक्सपोनेंट नहीं होता। वे हमेशा एक अंक से शुरू होते हैं। आप इंटीजर कॉन्स्टेंट्स को दशमलव, अष्टाधारी, या हेक्साडेसिमल रूप में निर्दिष्ट कर सकते हैं। वे साइन या अनसाइन प्रकार और लॉन्ग या शॉर्ट प्रकार निर्दिष्ट कर सकते हैं।