Não consigo! passei os últimos três dias tentando e não consigo enxergar a solução. Muito menos recursiva... Alguém pode ajudar?
Estou na mesma, socorro!
quem sabe na versão final, nessa é zero, não consigo pensar em nenhuma solução
3, na mesma.
DICAS:
Tente simplificar, entender alguns casos mais simples.
Por exemplo, você sabe resolver o problema para um estoque com uma barra e um pedido?
e duas barras e um pedido? e N>2 barras e um pedido?
e 1 barra e dois pedidos? e 1 barra e M>2 pedidos?
depois disso, comece a pensar em N barras e M pedidos.
Experimente com exemplos concretos, por exemplo, estoque com uma barra de 50 e um pedido de 40, e depois com um estoque com uma barra de 50 e um pedido de 60, etc.
meu problema é com a recursão. consigo resolver iterativamente e, a partir da condição de parada, delimitei um caso base, etc. e tentei fazer a versão recursiva. mas, para funcionar, precisaria passar a lista de resultados como argumento em processe_pedidos, coisa que não posso fazer...
precisaria passar a lista de resultados como argumento em processe_pedidos
Em vez disso, modifique a lista estoque e pedidos e faça a chamada recursiva a fim de resolver o subproblema.
Comigo o problema esta sendo para N barras e M pedidos. Com N e M igual a 2 ainda consigo pensar (logo tambem produzo o código). Mas quando tenho muitas barras e muitos pedidos, não consigo achar uma forma de fazer cortes de forma que dará certo, num caso possível.
Ex: Barras 85 90 Pedidos 70 60 30 10. Neste caso, não consigo pensar numa lógica para cortar o pedido da barra correta para atender a todos os pedidos. Meu programa corta 70 da barra 90 e aí já era, acabou a possibilidade de completar o pedido.
Há alguma dica de alguma função complementar ou algo que eu possa pensar para resolver este problema?
Ex: Barras 85 90 Pedidos 70 60 30 10.
Python 3.5.2 (default, Jul 5 2016, 12:43:10) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> main() estoque >>> 85 90 Estoque possui 2 barras: barra 0: 85 cm barra 1: 90 cm pedidos >>> 70 60 30 10 Há 4 pedidos para serem atendidos: pedido 0: 70 cm pedido 1: 60 cm pedido 2: 30 cm pedido 3: 10 cm Maneira para atender aos pedidos: pedido 0: corte 70 cm da barra 0 pedido 1: corte 60 cm da barra 1 pedido 2: corte 30 cm da barra 1 pedido 3: corte 10 cm da barra 0 Sobras no estoque: barra 0: 5cm barra 1: 0cm >>>
Meu programa corta 70 da barra 90 e aí já era, acabou a possibilidade de completar o pedido.
Perfeito.
A sua função tomou um decisão.
Cortou e lá na frente não conseguiu estender essa decisão a uma solução do problema.
Assim que percebeu que não vai dar é hora de bater em retirada (= return False,[]).
A chamada que tomou a decisão errada, receberá o sinal de retirada e deverá: desfazer o corte e tentar uma nova possibilidade ou ainda, bater em retirada mais ainda.
A luzinha de ideias acendeu aqui, obrigado .
Ainda nada... Vocês são os melhores professores ever, mas as dicas, para mim, foram insuficientes... Não consigo realizar esse EP.
Desisto... zero.
Quem sabe no próximo....
não consigo pensar em nenhuma solução
Não consigo realizar esse EP.
O negócio é mais ou menos o seguinte, o que importa é o caminho, não o destino.
Tipo Yoga, nem todo mundo consegue colocar o pé direito atrás da orelha esquerda.
O que importa é tentar (espero... ).
Todos estão brigando com o problema.
Assim todos estão aprendendo muito.
É isso que nós queremos. É isso que importa.
Sim, sim, ..., sabemos, tem esse negócio de nota etc. etc.
Entreguem um programa que não exploda.
Se a função recursiva processe_pedidos() algumas vezes diz que não é possível atender os pedidos, mas é, paciência.