题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
nums = list(map(int,input().split()))
def dfs(nums):
if len(nums) == 1:
if abs(nums[0]-24)<1e-6:
return True
for i in range(len(nums)-1):
for j in range(i+1,len(nums)):
a = nums[i]
b = nums[j]
for op in ["+","-","*","/"]:
for k in range(2):
if k==0:
if op=="/" and b==0:
return False
else:
new_nums = nums+[eval(op.join([str(a),str(b)]))]
else:
if op=="/" and a==0:
return False
else:
new_nums = nums+[eval(op.join([str(b),str(a)]))]
new_nums.remove(a)
new_nums.remove(b)
if dfs(new_nums):
return True
return False
print(str(dfs(nums)).lower())

