设置一些条件并引入简单的帮助变量。
L = 6, x = 3 , y = 2 introduce d = x - y = 1
条件:如果下一个数字假设值和前面x-1个元素值的列表有多个0位> d下一个数字具体值必须为1,否则添加两个1和0的括号作为具体值。
开始:检查(条件)=> 0,1 由于 0 计数检查中的总零数。
Empty => add 0 and 1
第 1 步:检查(条件)
0 (number of next value if 0 and previous x - 1 zeros > d(=1)) -> add 1 to sequence
1 -> add both 0,1 in two different branches
第2步:检查(条件)
01 -> add 1
10 -> add 1
11 -> add 0,1 in two different branches
第 3 步:
011 -> add 0,1 in two branches
101 -> add 1 (the next value if 0 and prev x-1 seq would be 010, so we prune and set only 1)
110 -> add 1
111 -> add 0,1
第4步:
0110 -> obviously 1
0111 -> both 0,1
1011 -> both 0,1
1101 -> 1
1110 -> 1
1111 -> 0,1
第 5 步:
01101 -> 1
01110 -> 1
01111 -> 0,1
10110 -> 1
10111 -> 0,1
11011 -> 0,1
11101 -> 1
11110 -> 1
11111 -> 0,1
第 6 步(完成):
011011
011101
011110
011111
101101
101110
101111
110110
110111
111011
111101
111110
111111
现在数一数。我也测试了 L = 6、x = 4 和 y = 2,但考虑检查算法是否有特殊情况和扩展情况。
注意:我很确定一些具有处置理论基础的算法应该是我算法的一个真正巨大的改进。