【发布时间】:2015-11-25 15:32:12
【问题描述】:
我正在尝试 Project Euler #15,它本质上减少了计算长度为 2*size 的二进制列表的数量,使得它们的条目总和为 size,对于特殊情况 size = 20。例如,如果 size = 2 有 6 个这样的列表:[1,1,0,0], [1,0,1,0], [1,0,0,1], [0,1,1,0],[0,1,1,0],[0,1,0,1],[0,0,1,1]。当然,对于任何值 size 计算此类序列的数量是微不足道的,并且等于一些二项式系数,但我有兴趣在 Python 中显式生成正确的序列。我尝试了以下方法:
import itertools
size = 20
binary_lists = itertools.product(range(2), repeat = 2*size)
lattice_paths = {lists for lists in binary_lists if sum(lists) == size}
但最后一行让我遇到了内存错误。什么是完成此任务的巧妙方法?
【问题讨论】:
-
这和问“我可以在 2*size 个槽中放置 size 1 的方法有多少种?”基本上不一样吗?
-
@NightShadeQueen:如果您想查看所有列出的方式,请不要这样做。
标签: python