Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में दिए गए प्रश्नों के आधार पर सरणी को उप-सरणी में विभाजित करने के बाद अधिकतम सबअरे योग

हमें दो पूर्णांक सरणियाँ दी गई हैं, एक में तत्वों की गणना की गई है और दूसरे में विभाजित बिंदु हैं जो सबसेट बनाने के लिए सरणी को विभाजित करने के लिए आवश्यक हैं और हमें प्रत्येक विभाजन में प्रत्येक उपसमुच्चय के योग की गणना करनी होगी और अधिकतम सबसेट योग वापस करना होगा।

उदाहरण के साथ समझते हैं:-

इनपुट - int arr[] =int arr[] ={ 9, 4, 5, 6, 7 } int splitPoints[] ={ 0, 2, 3, 1};

आउटपुट - प्रत्येक विभाजन के बाद अधिकतम उपसरणी योग [22, 13, 9, 9]

स्पष्टीकरण - यहां हम सरणी को उनके विभाजन बिंदुओं के अनुसार तोड़ रहे हैं और प्रत्येक विभाजन के बाद अधिकतम सबसेट योग प्राप्त कर रहे हैं

पहले विभाजन के बाद → {9} और {4,5,6,7}>> अधिकतम सबअरे योग है- 22

दूसरे विभाजन के बाद → {9}, {4,5} और {6,7}>> अधिकतम सबअरे योग है- 13

तीसरे विभाजन के बाद →{9}, {4,5}, {6} और {7}>> अधिकतम सबअरे योग है- 9

चौथे विभाजन के बाद →{9}, {4}, {5}, {6} और {7}>> अधिकतम सबअरे योग है- 9

इनपुट −int arr[] =int arr[] ={ 7, 8, 5, 9, 1 } int splitPoints[] ={ 1, 2, 0, 3};

आउटपुट −प्रत्येक विभाजन के बाद अधिकतम सबअरे योग [15, 115, 10, 9]

स्पष्टीकरण −यहां हम सरणी को उनके विभाजन बिंदुओं के अनुसार तोड़ रहे हैं और प्रत्येक विभाजन के बाद अधिकतम सबसेट योग प्राप्त कर रहे हैं

पहले विभाजन के बाद → {7,8} और {5,9,1}>> अधिकतम सबअरे योग 15

. है

दूसरे विभाजन के बाद → {7,8}, {5} और {9,1}>> अधिकतम सबअरे योग 115

. है

तीसरे विभाजन के बाद →{7}, {8}, {5} और {9,1}>> अधिकतम सबअरे योग 10

है

चौथे विभाजन के बाद →{7}, {8}, {5}, {9} और {1}>> अधिकतम सबअरे योग 9

है

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है -

  • हम मुख्य () विधि से शुरू करेंगे

    • किसी भी लंबाई के इनपुट सरणियाँ मान लें, एआर [] और स्प्लिटपॉइंट्स []। उनकी लंबाई की गणना करें और गणना के रूप में विधि को पास करेंSubsetSum(arr.length, splitPoints.length, splitPoints, arr)।

  • मेथड के अंदर कैलकुलेटसबसेटसम ()

    • योग [] के रूप में एक पूर्णांक सरणी बनाएं और योग [0] को गिरफ्तारी [0] के रूप में सेट करें।

    • एक सरणी की लंबाई तक i से 1 तक के लिए लूप प्रारंभ करें और योग [i] से योग [i - 1] + arr [i] सेट करें और अस्थायी [0] को नए उपसमूहों में सेट करें (0, n - 1, योग [n - 1])।

    • t2.add(temp[0]) और t1.add(0)

      . जोड़ते रहें
    • स्प्लिटपॉइंट्स सरणी की लंबाई तक i से 0 तक के लिए लूप प्रारंभ करें। लूप के अंदर currentSplitPoint को t1.floor(splitPoints[i]) पर सेट करें और t2 से t2.remove(temp[currentSplitPoint])

      के रूप में निकालें
    • अंत को अस्थायी [currentSplitPoint] के रूप में सेट करें। अंतिम और अस्थायी [currentSplitPoint] को नए उपसमूहों के रूप में सेट करें (currentSplitPoint, विभाजन बिंदु [i], योग [विभाजन बिंदु [i]] - (currentSplitPoint ==0? 0:योग [currentSplitPoint - 1]))

    • t2.add(temp[currentSplitPoint]) और temp[splitPoints[i] + 1] =new subSets(splitPoints[i] + 1, end, sum[end] - sum[splitPoints[i]])

    • t2.add(temp[splitPoints[i] + 1]), t1.add(currentSplitPoint) और t1.add(splitPoints[i] + 1)

      का उपयोग करके जोड़ें
    • t2.first() मान प्रिंट करें।

  • क्लास सबसेट के रूप में एक क्लास बनाएं और इसके डेटा सदस्यों के रूप में प्रथम, अंतिम और मान घोषित करें और डिफ़ॉल्ट कंस्ट्रक्टर को सबसेट्स (int f, int l, int v) के रूप में परिभाषित करें और पहले f पर सेट करें, अंतिम से l और मान v

  • उपयोगिता तुलनाकर्ता के रूप में एक वर्ग बनाएं जो तुलनित्र को लागू करेगा

    • तुलना के रूप में एक सार्वजनिक विधि बनाएं और जांचें कि यदि s2.value s1.value के बराबर नहीं है तो s2.value - s1.value लौटाएं।

    • जांचें कि क्या s1.first s2 के बराबर नहीं है। पहले तो s2.first - s1.first लौटाएं

उदाहरण

आयात करें s1.value){ वापसी s2.value - s1.value; } if(s1.first !=s2.first){ वापसी s2.first - s1.first; } वापसी 0; }}वर्ग उपसमूह{ int पहले; इंट लास्ट; इंट वैल्यू; सबसेट्स (इंट एफ, इंट एल, इंट वी) {प्रथम =एफ; अंतिम =एल; मूल्य =वी; }}पब्लिक क्लास टेस्टक्लास{ स्टेटिक शून्य कैलकुलेटसबसेटसम (इंट एन, इंट के, इंट स्प्लिटपॉइंट्स [], इंट एआर []) {इंट योग [] =नया इंट [एन]; योग [0] =गिरफ्तारी [0]; के लिए (int i =1; i t1 =नया ट्रीसेट<>(); ट्रीसेट <सबसेट> टी 2 =नया ट्रीसेट <> (नई उपयोगिता कॉम्परेटर ()); उपसमूह अस्थायी [] =नया उपसमूह [एन]; अस्थायी [0] =नए उपसमूह (0, एन -1, योग [एन -1]); t2.add (अस्थायी [0]); t1.add(0); System.out.println ("प्रत्येक विभाजन के बाद अधिकतम सबरे योग"); के लिए (int i =0; i

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा

प्रत्येक विभाजन के बाद अधिकतम सबअरे योग494949494434

  1. जावा प्रोग्राम यह जाँचने के लिए कि क्या एक ऐरे में दिया गया मान है

    इस लेख में, हम समझेंगे कि कैसे जांचा जाए कि किसी सरणी में दिया गया मान है या नहीं। यह सरणी तत्वों पर पुनरावृति करके और सरणी तत्वों के साथ दिए गए इनपुट की तुलना करके पूरा किया जाता है। नीचे उसी का एक प्रदर्शन है - इनपुट मान लीजिए हमारा इनपुट है - खोज की जाने वाली संख्या दर्ज करें:25पूर्णांक सरणी

  1. जावा 9 में JShell सत्र में फ़ाइल कैसे लोड करें?

    जेशेल एक नई कमांड-लाइन है इंटरैक्टिव आरईपीएल (पढ़ें-मूल्यांकन करें-प्रिंट-लूप करें ) टूल Java 9 . में पेश किया गया जावा में लिखी गई घोषणाओं, बयानों और अभिव्यक्तियों का मूल्यांकन करने के लिए। यह टूल हमें जावा . को निष्पादित करने की भी अनुमति देता है कोड स्निपेट s और तत्काल परिणाम प्राप्त करें। कभी-

  1. पायथन में दिए गए सरणी के सभी सबअरे योगों के 2 शक्ति योग का योग खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक सूची ए है। हमने ए के सभी गैर-रिक्त उप-सूचियों को लिया है क्योंकि हम जानते हैं कि एन तत्वों के साथ एक सूची एल है (2n - 1) गैर-रिक्त उपसूची। अब प्रत्येक उपन्यास के लिए, वह sublist_sum (तत्वों का योग और उन्हें S1 द्वारा निरूपित करता है) की गणना करता है। , एस2 , एस3 , ... , एस(