聚的一些OD机试题(迭代七)
## 1.题目描述
给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利,除法指实数除法运算,运算符仅允许出现在两个数字之间,本题对数字选取顺序无要求,但每个数字仅允许使用一次,且需考虑括号运算
此题允许数字重复,如3 3 4 4为合法输入,此输入一共有两个3,但是每个数字只允许使用一次,则运算过程中两个3都被选取并进行对应的计算操作。
示例1:
```
输入:7 2 1 10
输出:true
```
## 2. Solution
```python
def helper(arr, item):
if len(arr) == 1:
return arr[0] == item
else:
for i in range(len(arr)):
m = arr[:i] + arr[i+1:]
n = arr[i]
if helper(m, item+n) or helper(m, item-n) or helper(m, item *n) or helper(m, item/n):
return True
return False
while True:
try:
if helper(list(map(int, input().split())), 24):
print('true')
else:
print('false')
except:
break
```
给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利,除法指实数除法运算,运算符仅允许出现在两个数字之间,本题对数字选取顺序无要求,但每个数字仅允许使用一次,且需考虑括号运算
此题允许数字重复,如3 3 4 4为合法输入,此输入一共有两个3,但是每个数字只允许使用一次,则运算过程中两个3都被选取并进行对应的计算操作。
示例1:
```
输入:7 2 1 10
输出:true
```
## 2. Solution
```python
def helper(arr, item):
if len(arr) == 1:
return arr[0] == item
else:
for i in range(len(arr)):
m = arr[:i] + arr[i+1:]
n = arr[i]
if helper(m, item+n) or helper(m, item-n) or helper(m, item *n) or helper(m, item/n):
return True
return False
while True:
try:
if helper(list(map(int, input().split())), 24):
print('true')
else:
print('false')
except:
break
```
全部评论
相关推荐
点赞 评论 收藏
转发