Tomamos a sequência de números inteiros de para , e os empurramos para uma pilha, um por um, em ordem. Entre cada push, podemos optar por exibir qualquer número de itens da pilha (de 0 ao tamanho atual da pilha).
Sempre que extrairmos um valor da pilha, imprimi-lo-emos.
Por exemplo, é impresso quando o fazemos push, pop, push, pop, push, pop
.vem de push, push, push, pop, pop, pop
.
Contudo, não é uma impressão possível, porque não é possível ter impresso seguido por , sem ver entre.
Pergunta: Como podemos detectar pedidos impossíveis como?
De fato, com base em minha observação, saí em uma solução potencial. Mas o problema é que não posso provar que minha observação está completa.
O programa que escrevi com a seguinte lógica:
Quando o valor atual menos o próximo valor for maior que 1, um valor entre atual e o próximo não poderá aparecer após o próximo. Por exemplo, se current = 3 e next = 1, o valor entre current (3) e next (1) é 2 que não pode aparecer após next (1), portanto viola a regra.
Isso cobre todos os casos?