मान लीजिए कि हमारे पास nums नामक एक सरणी है और दूसरा मान योग है। हमें यह जांचना होगा कि क्या अंकों में मौजूद तत्वों को जोड़कर योग प्राप्त करना संभव है, हम एक ही तत्व को कई बार चुन सकते हैं।
इसलिए, यदि इनपुट संख्या =[2, 3, 5] योग =28 की तरह है, तो आउटपुट सही होगा क्योंकि हम 5 + 5 + 5 + 5 + 3 + 3 + 2 का उपयोग करके 26 प्राप्त कर सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अधिकतम:=1000
- तालिका :=MAX विज्ञापन के आकार की एक सरणी 0 से भर जाती है
- उपयोग() फ़ंक्शन को परिभाषित करें। इसमें अंक लगेंगे
- टेबल[0] :=1
- सूची संख्या क्रमित करें
- i के लिए 0 से लेकर अंकों के आकार -1 तक के लिए
- वैल:=nums[i]
- यदि तालिका[वैल] शून्य नहीं है, तो
- अगले पुनरावृत्ति के लिए जाएं
- जे के लिए 0 से MAX तक - वैल -1, do
- यदि तालिका[j] शून्य नहीं है, तो
- टेबल[j + वैल] :=1
- यदि तालिका[j] शून्य नहीं है, तो
- मुख्य विधि से निम्न कार्य करें -
- उपयोग(अंक)
- यदि तालिका [योग] शून्य नहीं है, तो
- सही लौटें
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
MAX = 1000 table = [0] * MAX def util(nums): table[0] = 1 nums.sort() for i in range(len(nums)): val = nums[i] if table[val]: continue for j in range(MAX - val): if table[j]: table[j + val] = 1 def solve(nums, sum): util(nums) if table[sum]: return True return False nums = [2, 3, 5] sum = 28 print (solve(nums, sum))
इनपुट
[2, 3, 5], 28
आउटपुट
True