Wir nehmen die Folge von ganzen Zahlen von bis und schieben sie nacheinander auf einen Stapel. Zwischen jedem Push können wir eine beliebige Anzahl von Elementen aus dem Stapel entfernen (von 0 bis zur aktuellen Stapelgröße).n
Jedes Mal, wenn wir einen Wert aus dem Stapel entfernen, drucken wir ihn aus.
Zum Beispiel wird ausgedruckt, wenn wir dies tun . kommt von .3 , 2 , 1push, pop, push, pop, push, pop
push, push, push, pop, pop, pop
Jedoch ist nicht möglich , ein Ausdruck, weil es nicht möglich ist, hat durch gefolgt gedruckt , ohne zu sehen dazwischen.3 1 2
Frage: Wie können wir unmögliche Aufträge wie ?
Aufgrund meiner Beobachtung habe ich tatsächlich eine mögliche Lösung gefunden. Das Problem ist jedoch, dass ich nicht beweisen kann, dass meine Beobachtung vollständig ist.
Das Programm, das ich mit der folgenden Logik geschrieben habe:
Wenn der aktuelle Wert abzüglich des nächsten Werts größer als 1 ist, kann nach dem nächsten Wert kein Wert zwischen aktuell und weiter angezeigt werden. Wenn beispielsweise current = 3 und next = 1 ist, ist der Wert zwischen current (3) und next (1) 2, der nach next (1) nicht . verstößt gegen die Regel.
Deckt dies alle Fälle ab?