题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
nums = list(map(int, input().split()))
nums.sort()
def dfs(nums): #只能遍历2个数字之间的元素,开头和末尾均无符号
if len(nums) == 1:#只有一个数字的时候 即递归到最后一个元素
return nums[0] == 24
for i in range(len(nums)):
for j in range(len(nums)):
if i != j:
new_nums = [nums[k] for k in range(len(nums)) if k != i and k != j] #i和j不能相同
# 加法
if dfs(new_nums + [nums[i] + nums[j]]):
return True
# 减法
if dfs(new_nums + [nums[i] - nums[j]]):
return True
# 乘法
if dfs(new_nums + [nums[i] * nums[j]]):
return True
# 除法
#被除数不为空
if nums[j] != 0 and dfs(new_nums + [nums[i] / nums[j]]):
return True
return False
if dfs(nums):
print("true")
else:
print("false")
查看7道真题和解析