#包括“comb/combination-colex.h”#包括“comb/ruler-func.h”#包括“ds/bitarray.h”#包括“fxtio.h”#包括“bits/print-bin.h”#包括“bits/bitcount.h”#包括“nextarg.h”#包括“jjassert.h”#包括“fxttypes.h”//%OEIS序列A191755://%二进制自洗牌单词。//#定义TIMING//取消注释以禁用打印静态内联空补码(constulong*x,ulongn,ulong*c)//将x[]中给出的组合C(2*n,n)的补码写到C[]。{ulong p=0;ulong i=0;对于(ulong j=0;j第页){c[i]=p;++i;++p;}//贾塞特(p==x[j]);++p;}而(p<2*n){//cout<<“2:”<<p<<endl;c[i]=p;++i;++p;}//jjassert(i==n);}// -------------------------整数main(int argc,char**argv){ulong n=3;NXARG(n,“长度2*n单词:n>0”);常数n2=2*n;组合_法C(n2,n);C.first();constulong*x=C.数据();ruler_func R(n);常数N=1UL<<(2*N);位数组B(N);//2**(2*n)位B.清除所有();ulong*c=新ulong[n];ulong*xw=新ulong[n];为所有洗牌做//{补语(x,n,c);对于(ulong j=0;j-->