मेरे पास वजन की एक निश्चित सूची है:
int [] वजन = नए int [ ] {10, 15, 20}; और एक लक्ष्य:
int target = 28; मुझे लक्ष्य को वज़न से तत्वों की योग के रूप में व्यक्त करने के लिए एक एल्गोरिथ्म की तलाश है (अनुमति दोहराए जाने के साथ) जैसे लक्ष्य या तो मिलान किया जाता है या अधिक हो जाता है , लक्ष्य से निकटतम संभव मिलान प्राप्त किया जाता है, और इसके भीतर, वजन का संख्या इसलिए उपरोक्त इनपुट के साथ मुझे 10 20 या 15 15 लौटना चाहते हैं, क्योंकि 30 जितना करीब हम प्राप्त कर सकते हैं, और 30 बनाने के विकल्पों में से, यह दो 10 10 10 से बेहतर है। लक्ष्य का 39 , उत्पादन होना चाहिए 20 20 के बजाय, कहते हैं, 15 15 10 या 10 10 10 10 । लक्ष्य के 14 के साथ, आउटपुट को 15 होना चाहिए। < / P> क्या नियमित foreach लूपों के अलावा अन्य कोई अच्छा तरीका है? मैं सरणी में उपलब्ध सबसे बड़ा मूल्य को पुनः प्राप्त करने की सोच रहा था और जांचता हूं कि लक्ष्य नकारात्मक है, यदि नहीं तो अगले मूल्य के लिए जाएं।
यह होमवर्क नहीं है:)
इसे इस रूप में जाना जाता है। एकमात्र अंतर यह है कि आप निकटतम मैच के बजाय निकटतम मैच की तलाश में हैं इसके अलावा सौभाग्य से वजन का कोई भी एक अलग मूल्य नहीं है। कठिनाई यह है कि आप केवल एक वजन का उपयोग नहीं कर सकते जो कि निकटतम और बाकी मूल्य (छोटे मूल्यों का एक संयोजन कभी-कभी एक बेहतर मैच बनायेगा) का उपयोग करके आता है। आपके उदाहरण में वजन सभी के बीच में 5 "इकाइयां" हैं, यदि यह हमेशा मामला है, तो समस्या हल करने के लिए बहुत आसान हो जाएगी।
Comments
Post a Comment