poj 3076 dancing links 解n*n的数独
hdu 3663 精确覆盖 dlx

字典序生成r组合

scturtle posted @ 2011年8月13日 17:05 in algorithm , 1422 阅读
# coding: utf-8

 ## n
#
 ## m

m=9
n=3
a=[i for i in range(n)]
ma=[m-n+i for i in range(n)] # 最大的一组

count=0

while 1:
    count+=1
    print a
    found=False
    for i in range(n)[::-1] : # 从后往前找可增的
        if a[i]<ma[i]:
            a[i]+=1
            for j in range(i+1,n): # 其后的按字典序初始化
                a[j]=a[j-1]+1
            found=True
            break
    if not found: break

print 'count:',count

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter