Próbuję wydrukować wszystkie prawidłowe kombinacje nawiasów w python za pomocą mojej własnej intuicji. To prawie działało, ale po prostu nie wydrukowało kilku kombinacji. Kod wygląda takDrukowanie prawidłowej kombinacji nawiasów w pytonie
solution = ""
def parentheses(n):
global solution
if n == 0:
print solution
return
for i in range(1, n+1):
start_index = len(solution)
solution = solution + ("(" * i + ")" * i)
parentheses(n - i)
solution = solution[:start_index]
if __name__ == "__main__":
n = int(raw_input("Enter the number of parentheses:"))
print "The possible ways to print these parentheses are ...."
parentheses(n)
dla N = 3, drukuje
()()()
() (())
(())()
((()))
To działa tak.
W pierwszej iteracji
()()() zostaną wydrukowane, kiedy powraca wezwanie do natychmiastowego rodzica, będzie kroić listy gdzie zaczęło dołączać pierwszy który będzie teraz() i uruchomienie kolejnej iteracji pętli do drukowania() (()) i tak dalej
problemem jest to, że nie jestem jakoś w stanie uchwycić to połączenie przy użyciu tej logiki
(()())
Podczas gdy myślę, jak to naprawić, jeśli jakieś pytho n guru może zaproponować poprawkę do tego, wtedy to będzie wspaniałe. Istnieją alternatywne rozwiązania, ale odkąd doszedłem bardzo blisko, chcę poprawić moje.
nie sądzę że jakakolwiek prosta modyfikacja tego będzie działać, ponieważ próbujesz zredukować nawiasy (n) do łańcuchów uzyskanych przez pojedyncze wywołania do nawiasów (k) (gdzie k
Na miejscu, nie jest to introspekcja wystarczająco głęboka, jak podkreślono w przykładzie 6 - 4. – sysuser