24点游戏
问题:输入1-10范围内的4个整数,4个数之间进行加减乘除后的结果等于24
分析:假设四个数分别是A,B,C,D,#为加减乘除中的任意一种运算,4个数有5种计算方式
- ((A#B)#C#D
- (A#(B#C))#D
- A#(B#(C#D))
- A#((B#C)#D)
- (A#B)#(C#D)
得出5种计算方式后,将每一种计算方式都拆分出来,每种计算方式根据优先级分成三个步骤实现,后一个步骤利用前一个步骤的结果进行计算。例如计算方式1(((A#B)#C#D)可以拆分的3个步骤为:
- 计算A#B的结果赋给R1
- 计算R1#C的结果赋给2
- 计算R2#D,令R3=R2#D
最终返回R3的值就是计算方式1的计算结果
算法步骤:
- 将加减乘除放在一个列表中
- 定义加减乘除四种运算
- 定义5种计算方式
- 判断5种计算方式能否得到24
将每个阶段的任务拆分为一个一个的函数,不同的函数实现不同的小功能,一个个串接在一起,将复杂简单化
op = ['#','+','-','*','/']
def cal(x,y,op):
if op == 1:
return x+y
elif op == 2:
return x - y
elif op == 3:
return x*y
elif op == 4:
return x/y
#定义5种计算方式
def cal_mod1(i,j,k,t,op1,op2,op3):
r1 = cal(i,j,op1)
r2 = cal (r1,k,op2)
r3 = cal(r2,t,op3)
return r3
def cal_mod2(i,j,k,t,op1,op2,op3):