[python 算法] 24 分
最编程
2024-06-26 16:40:46
...
def solution(numbers):
res = set()
def point24(numbers):
if len(numbers) == 1:
if abs(eval(numbers[0]) - 24) < 1e-10:
res.add(numbers[0])
else:
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
# 剩下的数字
rest_numbers = [x for p, x in enumerate(numbers) if p != i and p != j]
for op in "+-*/":
if eval(str(numbers[j])) != 0:
point24(["(" + str(numbers[i]) + op + str(numbers[j]) + ")"] + rest_numbers)
if op == "-" or (op == "/" and eval(str(numbers[i])) != 0): # 要考虑相反的情况
point24(["(" + str(numbers[j]) + op + str(numbers[i]) + ")"] + rest_numbers)
point24(numbers)
print(res)
solution([5, 5, 5, 1])
solution([1, 3, 4, 6])
solution([10, 10, 4, 4])
solution([10, 5, 2, 1])
参考:https://zhuanlan.zhihu.com/p/37608401
推荐阅读
-
华为 OD 机测试 - RSA 加密算法(Python/JS/C/C++ 2024 E 卷 100 分) - V.Python 算法源代码
-
算法 - 简单查找排序的 Python 实现
-
24/10/12 算法说明 汇聚层
-
机器学习 Python 实践 - 第 3 章 - 分类问题 - 2. Logistic 回归算法 - 3.2.3 实践
-
Python简单初级应用教程第一部分:Python 基础
-
算法工程师重生第 24 天(买卖股票的最佳时机 II 跳转游戏 跳转游戏 II K 反转后阵列和最大化 )
-
★ 算法 OJ 问题 ★ 二分查找算法
-
C++ 算法学习 - 1.6 差分算法和二维差分算法
-
华为 OD 机测试 - Excel 单元格值统计(Python/JS/C/C++ 2024 年 E 卷 200 分) - VIII、C 算法源代码
-
每日算法问题 - 二分查找问题