题目
描述
问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,但每个数字仅允许使用一次,测试用例保证无异常数字。
输出:
true or false
本题含有多组样例输入。
输入描述:
输入4个int整数
输出描述:
返回能否得到24点,能输出true,不能输出false
示例1
输入:
7 2 1 10
输出:
true
解题思路
(1)用递归算法进行求解
(2)每次取出列表中的第一个元素,设置目标值为24,用24对其进行加减乘除
(3)最后一层为为只剩最后一个元素
(4)只需要满足其中一条路径为24,则输出True,全部不满足则输出False
代码
def func(data, tar):
if len(data)==1:
return data[0]==tar
else:
for i in range(len(data)):
data = data[1:] + [data[0]]
if func(data[1:], tar+data[0]) or func(data[1:], tar-data[0]) or func(data[1:], tar*data[0]) or func(data[1:], tar/data[0]):
return True
return False
while True:
try:
data = list(map(int, input().split()))
n = len(data)
print(str(func(data, 24)).lower())
except Exception as e:
break
Reference
华为机试题库_在线编程+题解_牛客题霸_牛客网