Me ha surgido un problema con un código y no le encuentro solución posible...
El objetivo es crear un cajero automático que entregue una cantidad determinada con el mínimo número de billetes posible. El algoritmo, que parece sencillo en un principio, se complica cuando cambiamos la disponibilidad de ciertos billetes:
Código PHP:
<?
$x=0;
$n=$_POST['cantidad'];
if($_POST['500']==true){$x=$x+1;$moneda[$x]='B500';$valor[$x]=500;}
if($_POST['200']==true){$x=$x+1;$moneda[$x]='B200';$valor[$x]=200;}
if($_POST['100']==true){$x=$x+1;$moneda[$x]='B100';$valor[$x]=100;}
if($_POST['50']==true){$x=$x+1;$moneda[$x]='B50';$valor[$x]=50;}
if($_POST['20']==true){$x=$x+1;$moneda[$x]='B20';$valor[$x]=20;}
if($_POST['10']==true){$x=$x+1;$moneda[$x]='B10';$valor[$x]=10;}
for ($p=1;$p<=$x;$p=$p+1)
{while ($valor[$p]<=$n)
{$cambio[$p]=$cambio[$p]+1;
$n=$n-$valor[$p];
}
}
for ($p=1;$p<=$x;$p=$p+1) {print $moneda[$p] ; print ":"; print $cambio[$p];print "---";}
?>
billetes disponibles{200,50,20}
n=210
Y otros similares...
Creo que la solución es recursiva, pero voy bastante mal y agradeceria que si alguien da con una solución me pudiera guiar un poco.
Gracias por vuestra atención y tiempo ;)