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. आप बार-बार गणनाओं से बचने के लिए उपयोग कर सकते हैं।
  2. आप चीजों को बेहतर बनाने के लिए उपयोग कर सकते हैं (एक खाली हैश सेट के साथ शुरू करें और अपने सरणी से संख्या 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

Popular posts from this blog

jsp - No mapping found for HTTP request with URI with annotation config Spring MVC and Jetty -

c# - Split String between 2 substrings without removing delimiters -

asp.net - Procedure or function "Procedure name" expects a parameter "Param name" which was not supplied occurs rarely -