के संयोजन के लिए निकटतम मूल्य प्राप्त करें मैं एक एल्गोरिदम खोज रहा हूं जिसे मैं "अन्य मान" के रूप में जितना संभव हो सके, सरणी में मानों को संयोजित करने के लिए उपयोग कर सकता हूं।किसी सरणी (जेएस)
उदाहरण के लिए, मैं यह जानना चाहता हूं कि बंद करने का परिणाम क्या संयोजन है जो 2.5 है। और मेरी सरणी [0.5, 1.0, 1.5, 2.0, 3.0]
है। इस मामले में संयोजन 2.0+0.5
होगा।
2.7 एक ही कॉम्बो (2.5 निकटतम) उत्पन्न करेगा, जबकि 3.7 3.0+0.5
और 7.0 3.0+3.0+1.0
होगा।
मैं उपलब्ध संयोजन बनाने के लिए विभिन्न एल्गोरिदम पर पढ़ रहा हूं और उदाहरण के लिए - उदाहरण के लिए, यह एक: https://codereview.stackexchange.com/questions/7001/better-way-to-generate-all-combinations हालांकि, मुझे एक ऐसा फ़ंक्शन लिखने में कठिनाई हो रही है जो एक ही मान को कई बार उपयोग करने की अनुमति देता है (जैसे 7.0 के साथ मेरा उदाहरण)। इससे संयोजनों की संख्या काफी बड़ी हो जाती है।
कोई भी व्यक्ति जो अच्छा उदाहरण ले रहा है उसे दूर कर दिया गया है? या देने के लिए कोई संकेतक है?
EDIT @zkar ने मुझे "knapsack समस्या" के बारे में बताया। मैं इसे अपने उदाहरण के लिए जोड़ सकता हूं, मांग किए गए मान एक निर्दिष्ट सीमा (1.0 और 10.0) में हैं - जो कुछ हद तक संयोजन को सीमित करता है।
इस [नेप्सेक समस्या] पर देखो (http://en.wikipedia.org/wiki/Knapsack_problem) लगता है मुझे यह है कि आपको यही पढ़ना चाहिए। – zkar
जबकि मैं मानता हूं कि यह "नॅपैकैक समस्या" के अंतर्गत आ सकता है, फिर भी इसमें अंतर है कि मेरे पास चिंता करने के लिए केवल एक प्रकार का मूल्य है (चलो विकिपीडिया-उदाहरण में वजन कहें), दो नहीं। – Marcus
यदि आप सरणी में सबसे नज़दीक खोजना चाहते हैं तो आप इसे क्रमबद्ध करने से संख्या को पुश कर सकते हैं और फिर उस नंबर की दूसरी और पिछली संख्या लें और गणित का उपयोग करने का प्रयास करें।दौर या इस तरह कुछ कोशिश करें;) – Givi