题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
import itertools
# 定义四种基本运算符的函数
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
return None
return a / b
def can_get_24_recursive(numbers):
if len(numbers) == 1:
# 如果只剩下一个数字,检查该数字是否等于24
return abs(numbers[0] - 24) < 1e-6
# 生成所有可能的数字排列
permutations = itertools.permutations(numbers)
for perm in permutations:
a, b, *rest = perm
# 递归地处理剩下的数字
for op in [add, subtract, multiply, divide]:
if op == divide and abs(b) < 1e-6:
continue # 避免除以零
result = can_get_24_recursive([op(a, b)] + rest)
if result:
return True
return False
# 输入四个整数
input_numbers = [int(x) for x in input().split()]
# 检查是否可以得到24点并输出结果
if can_get_24_recursive(input_numbers):
print('true')
else:
print('false')
