且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

应该划分多少个数字的总和

更新时间:2023-02-10 16:41:16

对于相当小的 n 值,您可以隐式生成所有分区,计算每个分区中的部件数.

For rather small n values you can implicitly generate all partitions, count number of parts in every partition.

n = 7
kcounts = [0]*n

def parts(sum, last = 1, k=0):
    if sum == 0:
        global kcounts
        kcounts[k-1] += 1
        return

    for i in range(last, sum + 1):
        parts(sum - i, i, k + 1)

parts(n)
print(kcounts)

>>[1, 3, 4, 3, 2, 1, 1]

所以 k=3 给出最大分区

So k=3 gives maximum partitions