मान लीजिए हमारे पास धनात्मक पूर्णांकों की एक सूची है; आसन्न पूर्णांक फ्लोट डिवीजन का प्रदर्शन करेंगे। तो उदाहरण के लिए, [2,3,4] -> 2 / 3 / 4। अब, हम इन परिचालनों की प्राथमिकता को बदलने के लिए किसी भी स्थिति में किसी भी संख्या में कोष्ठक जोड़ सकते हैं। हमें यह पता लगाना चाहिए कि अधिकतम परिणाम प्राप्त करने के लिए कोष्ठक कैसे जोड़ा जाए, हमें स्ट्रिंग प्रारूप में संबंधित अभिव्यक्ति को खोजना होगा। हमारी अभिव्यक्ति में अनावश्यक कोष्ठक नहीं होना चाहिए। तो अगर इनपुट [1000,100,10,2] जैसा है, तो परिणाम "1000/(100/10/2)" होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=nums array का आकार
- अगर n 0 है तो एक खाली स्ट्रिंग लौटाएं।
- संख्या:=nums[0] स्ट्रिंग के रूप में
- यदि n 1 है, तो संख्या लौटाएं
- यदि n 2 है, तो num concatenate /, concatenate nums[1] को स्ट्रिंग के रूप में लौटाएं
- डेन:=एक खाली स्ट्रिंग
- मैं के लिए 1 से n - 1 की सीमा में
- den:=den + nums[i] स्ट्रिंग के रूप में
- अगर मैं n-1 नहीं है, तो den :=den concatenate '/'
- रिटर्न नंबर कॉन्सटेनेट / कॉन्सटेनेट (कॉन्सटेनेट डेन, कॉन्टेनेट)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#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 + ")"; } }; main(){ vector<int> v = {1000,100,10,2}; Solution ob; cout << (ob.optimalDivision(v)); }
इनपुट
[1000,100,10,2]
आउटपुट
1000/(100/10/2)