题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
def kk(a):
n = len(a)
if n == 1:
if abs(a[0] - 24) < 1e-6: #因为除法的存在 用abs() < 1e-6判断两数相等是很有必要的 不然8/(3-8/3) 不通过
return True
return False
for i in range(n - 1):
for j in range(i + 1, n):
li = []
for k in range(n):
if k != i and k != j:
li.append(a[k])
if kk(li + [a[i] * a[j]]):
return True
if kk(li + [a[i] + a[j]]):
return True
if kk(li + [a[i] - a[j]]):
return True
if kk(li + [a[j] - a[i]]):
return True
if abs(a[i]) > 1e-6:
if kk(li + [a[j] / a[i]]):
return True
if abs(a[j]) > 1e-6:
if kk(li + [a[i] / a[j]]):
return True
return False
while True:
try:
a = list(map(int, input().split()))
print("true" if kk(a) else "false")
except:
break

