মান लीजिए हमारे पास चार संख्याओं की एक सूची है, प्रत्येक संख्या 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