【发布时间】:2020-10-10 16:16:02
【问题描述】:
我的作业任务是生成没有两个零或三个一的二进制序列(范围为 1
n = int(input())
def gen(n):
if n == 0:
return ['']
l = gen(n-1)
start0 = []
start1 = []
for seq in l:
start0.append('0' + seq)
start1.append('1' + seq)
return start0 + start1
l1 = gen(n)
for elem in l1:
print(elem)
Sample Input
4
Sample Output(which I have right now)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Sample Output I need to obtain:
0101
0110
1010
1011
1101
简单来说,应排除 1000、1110、1100、0011、0111 等序列(连续没有两个零或三个 1)。为此尝试了列表方法,但我未能在所有范围内正常工作(1
附:我必须在不使用 itertools 的情况下做到这一点。避免使用 itertools 是任务的一部分。
【问题讨论】:
-
您可以使用广度优先搜索或深度优先搜索的回溯。
-
请从intro tour 重复on topic 和how to ask。 “告诉我如何解决这个编码问题?”与 Stack Overflow 无关。您必须诚实地尝试解决方案,然后就您的实施提出具体问题。二进制生成器可在线免费获得...您的在哪里为手头的问题付出了努力?
-
我发现的二进制生成器不能解决我的问题,或者我无法理解其他解决方案。我提到我尝试了列表方法和 if 语句,但失败了。我是 CS 和算法理论的新手,所以,如果我的问题很原始,我真的很抱歉!
标签: python algorithm recursion combinatorics