मान लीजिए हमारे पास चार संख्याओं की एक सूची है, प्रत्येक संख्या 1 से 9 की रेंज में है, एक निश्चित क्रम में। अब यदि हम संख्याओं के बीच +, -, *, और / (/ पूर्णांक विभाजन को दर्शाता है) ऑपरेटर रखते हैं, और उन्हें ब्रैकेट से समूहित करते हैं, तो हमें जांचना है कि क्या मान 24 प्राप्त करना संभव है या नहीं।
उदाहरण के लिए, यदि इनपुट nums = [5, 3, 6, 8, 7] है, तो आउटपुट True होगा, क्योंकि (5 * 3) - 6 + (8 + 7) = 24।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- एक फ़ंक्शन recur() परिभाषित करें। यह arr लेगा
- answer := एक नई सूची
- i को 0 से arr के आकार - 1 तक के लिए, करें
- pre := recur(arr[0 से i तक])
- suf := recur(arr[i + 1 से अंत तक])
- प्रत्येक k के लिए pre में, करें
- प्रत्येक j के लिए suf में, करें
- (k + j) को answer के अंत में डालें
- (k - j) को answer के अंत में डालें
- (k * j) को answer के अंत में डालें
- यदि j 0 नहीं है, तो
- (k / j का भागफल) को answer के अंत में डालें
- प्रत्येक j के लिए suf में, करें
- यदि answer का आकार 0 है और arr का आकार 1 है, तो
- arr[0] को answer के अंत में डालें
- answer लौटाएं
- मुख्य विधि से जांचें कि 24 recur(nums) में है या नहीं, यदि हां तो True लौटाएं, अन्यथा False
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, nums):
def recur(arr):
answer = []
for i in range(len(arr) - 1):
pre, suf = recur(arr[: i + 1]), recur(arr[i + 1 :])
for k in pre:
for j in suf:
answer.append(k + j)
answer.append(k - j)
answer.append(k * j)
if j != 0:
answer.append(k // j)
if len(answer) == 0 and len(arr) == 1:
answer.append(arr[0])
return answer
return 24 in recur(nums)
ob = Solution()
nums = [5, 3, 6, 8, 7]
print(ob.solve(nums))
इनपुट
[5, 3, 6, 8, 7]
आउटपुट
True