小编Asl*_*zov的帖子

获取给出某种产品的所有可能组合的数量

我正在寻找一种算法来计算给出特定产品的所有可能组合的数量。我有一个完美平方列表 [1,4,9,16,..,n],我有两个值 a, b,其中 a - 我们可以在乘法中使用以获得完美平方的元素数量,b - 最大值例如,如果 a = 3 且 b = 6,则对于完全平方数 36,我们可以有诸如 [1,6,6]、[2,3,6]、[4、 3,3]等等(顺序问题[1,6,6]和[6,6,1]不同)。注意我们不能使用 [1,9,4] 组合,因为 9 > b

我尝试使用 itertools 中的每个完美平方的所有除数的组合,之后我检查了组合的每个乘积,如果 x1 x2 x3 == 36,我在完美平方 = 36 的计数中添加 1。这个算法有效,但它长乘法需要大量时间。

我们能否让它比查看每个完美正方形的每种组合更快?

def get_divisors(n):
    result = []
    for i in range(1, n//2 + 1):
        if n % i == 0:
            result.append(i)
    result.append(n)
    return result
a = 2
b = 3
count = 0
all_squares = [1,4,9]
for i in all_squares:
    divisors = get_divisors(i)
    for r …
Run Code Online (Sandbox Code Playgroud)

python algorithm combinations

4
推荐指数
1
解决办法
137
查看次数

标签 统计

algorithm ×1

combinations ×1

python ×1