簡體   English   中英

組合python非常大的列表

[英]List of combination python very large numbers

對於非常大的n,我需要列出n個數字中k個所有可能組合的列表。 我遇到了我的列表大小迅速超過500000的問題,而python似乎處理得不太好。 但是,我想超越這個數億。 我該如何處理? 非常感謝!

DP不能用於很大的數字,因為存儲如此大的列表會導致MemoryError 想法是即時計算事物並記錄所需的值。

def comb(n, k):
        deno = 1
        num = 1
        result = 1
        #set the value of deno and num bounds
        if k > n - k:
                num_val = k + 1
                den_val = n - k
        else:
                num_val = n - k + 1
                den_val = k
        i = n
        #calculate n * (n - k) *....* (n-num_value))
        while i != num_val - 1:
                if i == 0:
                        result *= 1
                else:
                        result *= i
                if i == num_val:
                        num = result
                i -=1
        i = 0
        result = 1
        #calculate den_val! (factorial of denominator)
        while i != den_val + 1:
                if i == 0:
                        result *= 1
                else:
                        result *= i
                if i == den_val:
                        deno = result
                i += 1
        ans = num/deno
        return ans


if __name__ == "__main__":
        n = input("Enter n\n")
        k = input("Enter k\n")
        print(comb(n, k))

復雜度-O(max(k,n-k))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM