无连续重复子串
DFS创造字符串,要注意创造前后进入不同分支时保持字符串内容的clean,不要被其他分支的改动影响,当达到指定长度时,判断这个字符串是否包含相邻子串。
def compare(s):
s = "".join(s)
for i in range(1, len(s)//2+1):
for j in range(len(s)):
if s[j:j+i] == s[j+i:j+i+i]:
return False
return True
def dfs(i, res, num):
if len(res) == num:
if compare(res):
print("".join(res))
else:
for j in range(1, 4):
if j != i:
res.append(str(j))
dfs(j, res, num)
res.pop()
def func():
num = int(input())
for i in range(1, 4):
res = []
res.append(str(i))
dfs(i, res, num)
if __name__ == "__main__":
func()