मान लीजिए कि हमारे पास एक संख्या लक्ष्य है। हमारे पास एक और दो नंबर ए और बी हैं। हमें यह जांचना है कि क्या हम जितनी बार चाहें उतनी बार ए और बी जोड़कर लक्ष्य प्राप्त कर सकते हैं।
इसलिए, यदि इनपुट लक्ष्य =26 ए =5 बी =7 जैसा है, तो आउटपुट सत्य होगा क्योंकि हम ए और बी को (7 + 7 + 7 + 5) जोड़कर 26 प्राप्त कर सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- उपयोग() फ़ंक्शन को परिभाषित करें। इसमें x, a, b, is_ok, target लगेगा
- यदि x> लक्ष्य है, तो
- वापसी
- अगर is_ok[x] सच है, तो
- वापसी
- is_ok[x] :=सच
- उपयोग(x + a, a, b, is_ok, target)
- उपयोग(x + b, a, b, is_ok, target)
- मुख्य विधि से निम्न कार्य करें -
- is_ok :=आकार की एक सरणी (लक्ष्य + 1) और गलत से भरें
- उपयोग (0, ए, बी, is_ok, लक्ष्य)
- वापसी is_ok[target]
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def util(x, a, b, is_ok, target): if x > target: return if is_ok[x]: return is_ok[x] = True util(x + a, a, b, is_ok, target) util(x + b, a, b, is_ok, target) def solve(target, a, b): is_ok = [False] * (target + 1) util(0, a, b, is_ok, target) return is_ok[target] target = 26 A = 5 B = 7 print(solve(target, A, B))
इनपुट
26, 5, 7
आउटपुट
True