java - How to improve the algorithm sum? -
सोर्स कोड पर विचार करें:
सार्वजनिक वर्ग subSetSumR {// Solution का उपयोग करते हुए सबसेट राशि recursion // फ्यून्तेस, 9 फ़रवरी, 200 9 द्वारा प्रोग्रामेट किया गया। सबसेट राशि में मेरे एससेट का एक सबसेट ढूंढना होता है जिनके तत्व लक्ष्य तक जोड़ते हैं / यह एक अच्छी तरह से ज्ञात एनपी-पूर्ण समस्या है, सार्वजनिक स्थैतिक बूलियन सबसेटसेटर (Int [] mySet, Int n, int लक्ष्य) {if (लक्ष्य == 0) सत्य वापस; अगर ((लक्ष्य और लेफ्टिनेंट; 0) | (n & gt; = mySet.length)) गलत लौटा; यदि (सबसेटसेटिक (मेरीसेट, एन + 1, लक्ष्य - मेरीसेट [एन])) {System.out.print (mySet [n] + ""); वापस सच; } अगर (सबसेटसेटक्रूर (माइसेट, एन + 1, लक्ष्य)) सत्य रिटर्न; विवरण झूठा है; }} महत्वपूर्ण तथ्य: इनपुट की संख्या 1 से अधिक है। मैं ऊपर दिए गए समाधान को गति देने के लिए इस तथ्य का उपयोग कैसे करूं?
< Div class = "post-text" itemprop = "text">
- आप बार-बार गणनाओं से बचने के लिए उपयोग कर सकते हैं।
- आप चीजों को बेहतर बनाने के लिए उपयोग कर सकते हैं (एक खाली हैश सेट के साथ शुरू करें और अपने सरणी से संख्या 1 जोड़कर सेट को बढ़ते हुए बढ़ो)
set = emptyset; के लिए (num: array_of_number) {newset = emptyset; (आइटम: सेट) {if (num + item == goal) "" हमें "" newset.insert (num + item);} set.insert (newset);} वापसी "संभव नहीं" लौटा "" प्री> <पी> मेमोइज़िंग सेट & lt; tuple & lt; int, int & gt; मेमो; // अपने कार्य को सार्वजनिक स्थिर बुलियन subSetSumRecur (int [] mySet, int n से पहले साफ़ करना सुनिश्चित करें , इष्ट लक्ष्य) {if (set.contains (tuple (n, लक्ष्य)) झूठी वापसी; set.insert (टपल (एन, लक्ष्य)); ... ... * आपका कोड यहाँ जाता है / / ... } जावा में वहाँ सेट के जैसा कुछ होना चाहिए (मुझे हैशसेट लगता है) और ट्यूपल (सी ++ std :: pair में सबसे अच्छा विकल्प है। अगर जावा में कुछ समान नहीं है तो आप कर सकते हैं एक छोटी सी कक्षा जिसमें 2 इन्टियां हैं जो एक हैशसेट में डालने योग्य होती हैं)।
Comments
Post a Comment