मैंने स्टैकऑवरफ्लो पर यह सवाल पूछा , लेकिन मुझे लगता है कि यहां एक अधिक उपयुक्त स्थान है।
यह परिचय से एल्गोरिदम पाठ्यक्रम की एक समस्या है :
आपके पास पॉजिटिव पूर्णांकों के साथ एक सरणी (सरणी को सॉर्ट करने की आवश्यकता नहीं है या तत्वों को अद्वितीय)। एक सुझाव एल्गोरिथ्म तत्वों की सबसे बड़ी राशि है कि से विभाज्य है खोजने के लिए ।n O ( n ) एन
उदाहरण: । इसका उत्तर (तत्व )56 6 , 13 , 4 , 8 , 25
यह गतिशील प्रोग्रामिंग का उपयोग करना और शेष साथ सबसे बड़ी राशि जमा करना अपेक्षाकृत आसान है ।0 , 1 , 2 , । । । , एन - 1
इसके अलावा, अगर हम तत्वों के एक सन्निहित अनुक्रम पर ध्यान देते हैं, तो समय में इष्टतम ऐसे अनुक्रम को खोजना आसान है , आंशिक रकम मोडुलो को संग्रहीत करके : S [i] = a [0] + [१] + \ डॉट्स एक [मैं] , प्रत्येक शेष के लिए आर सबसे बड़ा सूचकांक याद जे ऐसी है कि एस [जे] \ समतुल्य r \ pmod {n} , और फिर प्रत्येक के लिए मैं आप समझते हैं एस [जे] एस [i] जहां j , r = S [i] \ bmod n के अनुरूप सूचकांक है ।एन एस [ मैं ] = एक [ 0 ] + एक [ 1 ] + ⋯ + एक [मैं एस [ जे ] - एस [ मैं ]
लेकिन क्या सामान्य मामले के लिए समय समाधान है? कोई भी सुझाव प्रशंसनीय होगा! मुझे लगता है कि यह रैखिक बीजगणित से निपटने के लिए कुछ है, लेकिन मुझे यकीन नहीं है कि वास्तव में क्या है।
वैकल्पिक रूप से, यह समय में किया जा सकता है ?