Foros del Web » Programando para Internet » PHP »

Ayuda con secuencias numericas

Estas en el tema de Ayuda con secuencias numericas en el foro de PHP en Foros del Web. Hola Estoy haciendo un programa y la verdad es que estoy bastante atascado. Lo que tengo que hacer es lo siguient: para determinar la n-ésima ...
  #1 (permalink)  
Antiguo 13/12/2009, 13:55
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 4 meses
Puntos: 0
Ayuda con secuencias numericas

Hola

Estoy haciendo un programa y la verdad es que estoy bastante atascado. Lo que tengo que hacer es lo siguient: para determinar la n-ésima forma de ordenar unas sumas parciales
para hacer una suma fija. Debo recibir un entero s (1 = s = 32) y otro n (1 = n < 231) y mostrar la n-ésima forma de ordenar la suma de digitos que lo forman, en orden ascendente.

Por si no queda claro, pongo un ejemplo: Si queremos obtener 4 como valor de la suma, tenemos 8 maneras diferentes de conseguirlo (siempre en orden)

1 1 1 1
1 1 2
1 2 1
1 3
2 1 1
2 2
3 1
4

Pero como queremos quedarnos por ejemplo con la 4ª forma de conseguirlo, el programa tan sólo debe mostrar: 1 3

Tengo el siguiente código, pero no consigo que funcione correctamente:

$contador=0;
function sec($suma, $suma_temp, $secuencia, $aparicion, $cifra) {
while ($cifra>=1 && $cifra<=9):
$secuencia=($secuencia*10)+$cifra;
$suma_temp=$suma_temp+$cifra;
if ($suma_temp<$suma) {
sec($suma,$suma_temp,$secuencia,$aparicion,$cifra) ;
}
elseif ($suma_temp>$suma) {
#echo "Me he pasao<br>".$secuencia."<br>";
return 0;
}
elseif ($suma_temp=$suma) {
$GLOBALS['contador'] = $GLOBALS['contador']+1;
#echo $GLOBALS['contador'];
if ($GLOBALS['contador']==$aparicion) { #echo "Esta es!";
echo "Encontrada la ".$aparicion." secuencia: '".$secuencia."' que suma ".$suma."<br>";
}
return 0;
}
$cifra++;
endwhile;
}
for ($i = 1; $i <= 9; $i++) {sec(5,0,0,3,$i); }

Alguien ve el fallo?
Muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:34.