给出给定整个n
的打印算法的伪代码
所有长度为n
且在{a, b}
中带有符号的字符串
奇数个符号a
和奇数个符号b
。
例如,对于n = 3
,什么也不会打印,而对于n = 4
,则
要打印的字符串是:
abbb babb bbab bbba baaa abaa aaba aaab
该算法必须具有复杂度O(nS(n))
,其中S(n)
是
要打印的字符串。激发算法的复杂性。
我做了解决方案,但我不知道它是否是回溯算法以及该算法的复杂性。这是正确的方法吗?
def stringheBinarie(n, i, sol = [], totA = 0, totB = 0):
if n == i:
print("".join(sol))
else:
if i < n - 1:
sol.append('a')
stringheBinarie(n, i + 1, sol, totA + 1, totB)
sol.pop()
sol.append('b')
stringheBinarie(n, i + 1, sol, totA, totB + 1)
sol.pop()
else:
if totA % 2 == 0 and totB % 2 == 1:
sol.append('a')
stringheBinarie(n, i + 1, sol, totA +1, totB)
sol.pop()
if totB % 2 == 0 and totA % 2 == 1:
sol.append('b')
stringheBinarie(n, i + 1, sol, totA, totB + 1)
sol.pop()