题解 | #24点游戏算法#
24点游戏算法
http://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
while True:
try:
a = input().split()
b = ['+','-','*','/']
flag = 0
for i_1 in range(4):
for i_2 in range(4):
for i_3 in range(4): #三个符号空穷举
c = []
c.append('('+'('+ a[0]+b[i_1]+a[1] + ')'+b[i_2] + a[2]+ ')'+b[i_3]+a[3]) #四个数字空,穷举,但要注意计算顺序,虽然符号没有括号,但是默认前两个数计算出来再+-*或/第三个数
c.append('('+'('+ a[0]+b[i_1]+a[1] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[2])
c.append('('+'('+ a[0]+b[i_1]+a[2] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[3])
c.append('('+'('+ a[0]+b[i_1]+a[2] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[1])
c.append('('+'('+ a[0]+b[i_1]+a[3] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[1])
c.append('('+'('+ a[0]+b[i_1]+a[3] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[2])
c.append('('+'('+ a[1]+b[i_1]+a[0] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[3])
c.append('('+'('+ a[1]+b[i_1]+a[0] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[2])
c.append('('+'('+ a[1]+b[i_1]+a[2] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[0])
c.append('('+'('+ a[1]+b[i_1]+a[2] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[3])
c.append('('+'('+ a[1]+b[i_1]+a[3] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[0])
c.append('('+'('+ a[1]+b[i_1]+a[3] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[2])
c.append('('+'('+ a[2]+b[i_1]+a[0] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[3])
c.append('('+'('+ a[2]+b[i_1]+a[0] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[1])
c.append('('+'('+ a[2]+b[i_1]+a[1] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[3])
c.append('('+'('+ a[2]+b[i_1]+a[1] + ')'+b[i_2]+a[3]+ ')'+b[i_3]+a[0])
c.append('('+'('+ a[2]+b[i_1]+a[3] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[1])
c.append('('+'('+ a[2]+b[i_1]+a[3] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[0])
c.append('('+'('+ a[3]+b[i_1]+a[1] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[0])
c.append('('+'('+ a[3]+b[i_1]+a[1] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[2])
c.append('('+'('+ a[3]+b[i_1]+a[2] + ')'+b[i_2]+a[0]+ ')'+b[i_3]+a[1])
c.append('('+'('+ a[3]+b[i_1]+a[2] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[0])
c.append('('+'('+ a[3]+b[i_1]+a[0] + ')'+b[i_2]+a[2]+ ')'+b[i_3]+a[1])
c.append('('+'('+ a[3]+b[i_1]+a[0] + ')'+b[i_2]+a[1]+ ')'+b[i_3]+a[2])
for i in range(24):
if(eval(c[i]) == 24):
flag = 1 #若有等于24的,flag = 1
break
if(flag == 1):
print('true')
else:
print('false')
except:
break
华为机试题解(prod.by kedao) 文章被收录于专栏
华为实习机试题解