(Python)
从集合导入集合
从numpy导入数组
定义为二进制(n,k):
ans=[]
对于范围(k)内的i:
ans.insert(0,n%2)
n=n>>1
返回数组(ans)
def powerSet(k):返回[toBinary(n,k)for n in range(1,2**k)]
def courcelle(maxUses,remainingSets,exact=False):
如果精确且不是全部(maxUses<=sum(remainingSets)):ans=0
elif len(remainingSets)==0:ans=1
其他:
set0=剩余集[0]
if all(set0<=maxUses):ans=courcelle(maxUses-set0,remainingSets[1:],exact=精确)
其他:ans=0
ans+=课程(maxUses,remainingSets[1:],exact=exact)
返回ans
对于范围(10)内的i:
打印(i,courcelle(数组([4]*i),powerSet(i),精确=假))
|