导入系统定义打印列表(v):对于v中的a:sys.stdout.write(字符串(a))sys.stdout.write(',')定义打印文件(v):对于范围内的i(len(v)):打印i+1,打印v[i]定义钙(n):nbbits=(n-1)*n/2m=2**nbbits-1return{'size':n,'nbbits':nbbits,'max':m,'closed':{}}定义比特数(信息、i、j):如果i==j:引发ArithmeticError()如果i<0或j<0或i>=info['size']或j>=info['size']:引发算术错误()如果j>i:i,j=j,i返回信息['nbbits']-1-(j*info['size']-(j*(j+1))/2+(i-j-1))定义位(信息、v、i、j):如果i==j:返回1返回(v>>比特数(信息,i,j))&1定义设置位(信息、v、i、j):如果i==j:返回vreturn v|(1<<比特数(信息,i,j))def printmat(信息,v):对于xrange中的j(信息['size']):对于xrange中的i(信息['size']):打印位(信息、v、i、j),打印“”定义addall(info,res,v):完成=0;对于xrange(1,信息['size'])中的i:如果完成&(1<<i):持续m=v对于xrange(1,信息['size'])中的j:如果(位(信息、m、i、j)):m=设置位(信息,m,j,0)完成=完成|(1<<j)附件(m)定义材料(信息):n=信息['size']如果n==2:返回[0,1]pv=材料(钙化钙(n-1))res=列表(pv)对于pv中的v:addall(信息、资源、v)返回排序(res)打印文件(matn(calcinfo(10))