मुझे निम्न समस्या कथन में आया है।बराबर आकार में एक ऐरे को विभाजित करें, जैसे दिए गए फ़ंक्शन का मान न्यूनतम
आप आकार
N
के प्राकृतिक संख्याओं की एक सूची है और आप, दो सूचियोंA
और आकारN/2
कीB
में मानों वितरित करना होगा ताकिA
तत्वों की चुकता राशिB
के गुणन के सबसे नजदीक संभव है तत्वों।उदाहरण: सूची पर विचार करें 7 11 1 9 10 3 5 13 9 12.
अनुकूलित वितरण है:
सूची A: 5 9 9 12 13
सूची B: 1 3 7 10 11
जो अंतर abs ((5 + 9 + 9 + 12 + 13)^2 - (1 * 3 * 7 * 10 * 11)) = 6
आपके प्रोग्राम को आउटपुट 6 होना चाहिए, जो न्यूनतम है अंतर प्राप्त किया जा सकता है।
मैं क्या कोशिश की है:
मैं इस समस्या को हल करने के लिए लालची दृष्टिकोण की कोशिश की है। मैंने दो चर sum
और mul
लिया। अब मैंने दिए गए सेट से तत्वों को एक-एक करके लेना शुरू कर दिया है और इसे दोनों चरों में जोड़ने की कोशिश की है और वर्तमान योग और गुणा के वर्ग की गणना की है। अब तत्व को दो सेटों में से एक में अंतिम रूप दें, जैसे कि संयोजन न्यूनतम संभव मूल्य देता है।
लेकिन यह दृष्टिकोण दिए गए उदाहरण में काम नहीं कर रहा है। मैं यह नहीं समझ सकता कि यहां किस दृष्टिकोण का उपयोग किया जा सकता है।
मैं समाधान के लिए सटीक कोड मांगने के लिए नहीं हूं। कोई भी संभावित दृष्टिकोण और यह क्यों काम कर रहा है, ठीक होगा।
संपादित करें:
स्रोत: CodinGame, Community puzzle
क्या समस्या आप अपने दृष्टिकोण के साथ आती हैं? –
कैसे के बारे में आकार के सभी संभव संयोजनों n/2 मिल प्रत्येक संयोजन के लिए sqrSum calculate (यहाँ एक उदाहरण https://stackoverflow.com/questions/2201113/combinatoric-n-choose-r-in-java-math है) और उत्पाद एक संग्रह में सभी परिणाम कुछ बिंदु पर यह खत्म हो जाना रख आप sqrtSum और उत्पाद देखेंगे के रूप में पड़ोसियों छोटी से छोटी अंतर – urag
@urag यह ध्यान देने योग्य है कि घातीय समय लगेगा लायक है के साथ जोड़ी को खोजने - यदि n भी 50 के आसपास के रूप में के रूप में छोटा है , आपको समस्याएं आ रही हैं। आमतौर पर घातीय बल ब्रूट-फोर्स समाधान इन तरह की समस्याओं के लिए स्पष्ट है, कुंजी समस्या को हल करने का एक बेहतर तरीका ढूंढना है। – Dukeling