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

C++ में इष्टतम विभाजन


मान लीजिए हमारे पास धनात्मक पूर्णांकों की एक सूची है; आसन्न पूर्णांक फ्लोट विभाजन करेंगे। उदाहरण के लिए, [2,3,4] -> 2/3/4। अब, हम इन संचालन की प्राथमिकता बदलने के लिए किसी भी स्थिति पर कितने भी कोष्ठक जोड़ सकते हैं। हमें यह ढूंढना है कि अधिकतम परिणाम प्राप्त करने के लिए कोष्ठक कैसे जोड़ें, हमें स्ट्रिंग प्रारूप में संबंधित अभिव्यक्ति ढूंढनी है। हमारे अभिव्यक्ति में अनावश्यक कोष्ठक नहीं होने चाहिए। इसलिए यदि इनपुट [1000,100,10,2] है, तो परिणाम "1000/(100/10/2)" होगा।

हल का दृष्टिकोण

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

  • n := nums सरणी का आकार
  • यदि n = 0 तो खाली स्ट्रिंग लौटाएं।
  • num := nums[0] को स्ट्रिंग के रूप में
  • यदि n = 1, तो num लौटाएं
  • यदि n = 2, तो num + "/" + nums[1] को स्ट्रिंग के रूप में लौटाएं
  • den := एक खाली स्ट्रिंग
  • i = 1 से n-1 तक:
    • den := den + nums[i] को स्ट्रिंग के रूप में
    • यदि i, n-1 नहीं है, तो den := den + "/"
  • num + "/" + "(" + den + ")" लौटाएं

उदाहरण

#include <bits/stdc++.h> 
using namespace std; 

class Solution { 
public: 
    string optimalDivision(vector<int>& nums) { 
        int n = nums.size(); 
        if(n == 0) return ""; 
        string num = to_string(nums[0]); 
        if(n == 1) return num; 
        if(n == 2) return num + "/" + to_string(nums[1]); 
        string den = ""; 
        for(int i = 1; i < n; i++){ 
            den += to_string(nums[i]); 
            if(i != n - 1) den += "/"; 
        } 
        return num + "/" + "(" + den + ")"; 
    } 
}; 

int main(){ 
    vector<int> v = {1000,100,10,2}; 
    Solution ob; 
    cout << (ob.optimalDivision(v)); 
}

इनपुट

[1000,100,10,2]

आउटपुट

1000/(100/10/2)

  1. - C++ Enum: एक पूर्ण गाइड

    C++ Enum का उपयोग कैसे करें: एक गाइड एक एन्यूमरेटेड टाइप एक उपयोगकर्ता-परिभाषित डेटा प्रकार है जिसे मानों की एक श्रृंखला से एक मान निर्दिष्ट किया जा सकता है। एनम का उपयोग अक्सर प्रोग्रामिंग में तब किया जाता है जब एक वेरिएबल को केवल मानों के एक विशिष्ट सेट में से एक मान स्टोर करने में सक्षम होना चाहि

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

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

  1. ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम के लिए C++ प्रोग्राम ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम के लिए C++ प्रोग्राम

    पेज नंबर और पेज साइज़ दिए गए हैं; कार्य ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम का उपयोग करके मेमोरी ब्लॉक को पेज में आवंटित करते समय हिट्स और मिस की संख्या ढूंढना है। ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम क्या है? ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम एक पेज रिप्लेसमेंट एल्गोरिदम है। एक पेज रिप्लेसमेंट एल्गोरि