如何优化算法来计算连续二元事件的组合? (在 python 或伪代码中)

问题描述 投票:0回答:0

基本上,我要解决的问题是我收到一个整数 n 的输入来表示一系列元素。每个元素都可以有一个状态 0 或 1。我需要计算,在所有可能的元素连续排列中,有多少次有三个连续的 1。

举一个现实生活中的例子:

商店货架上有 N 块巧克力排成一排。每块巧克力可以是黑巧克力或白巧克力。在所有可能的组合中,3 块黑巧克力排成一排有多少种? 输入:4 > 输出:3 输入:5 > 输出:8

这是我在 Python 中已有的代码(与输入 4 或 5 完美配合,但在 n > 20 左右它开始崩溃)。

def count_combinations(n):    
count = 0
for i in range(2**n):
    binary = bin(i)[2:].zfill(n)  # Convert to binary and pad with zeros
    if '111' in binary:
        count += 1
return count

`

我认为我缺少一些理论来解决这个问题。关于采取什么方法有什么建议吗?

python algorithm optimization permutation complexity-theory
© www.soinside.com 2019 - 2024. All rights reserved.