整数のシーケンスを に 、順番に1つずつスタックにプッシュします。各プッシュの間に、スタックから任意の数のアイテムをポップすることを選択できます(0から現在のスタックサイズまで)。
スタックから値をポップするたびに、それを出力します。
例えば、 するとプリントアウトされますpush, pop, push, pop, push, pop
。から来ていpush, push, push, pop, pop, pop
ます。
しかしながら、 することができないため、可能なプリントアウトではありません 印刷された後に 、見ずに 間に。
質問:次のような不可能な注文をどのように検出できますか??
実際、私の観察に基づいて、私は潜在的な解決策を見つけました。しかし問題は私が私の観察が完全であることを証明できないことです。
私が次のロジックで書いたプログラム:
現在の値から次の値を差し引いた値が1より大きい場合、現在と次の間の値は次の後に表示できません。たとえば、current = 3およびnext = 1の場合、current(3)とnext(1)の間の値は2であり、next(1)の後には表示されないため、 ルールに違反しています。
これはすべてのケースをカバーしますか?