Ver Mensaje Individual
  #11  
Antiguo 25-05-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Reputación: 24
fjcg02 Va camino a la fama
Yo te voy a hacer un par de sugerencias suponiendo que lo valores están ordenados ascendentemente:
1.- Acota: es decir, una vez dado el valor, los valores estarán entre el primer valor y el previo menor al valor que buscas.
2.- La minima combinación de sumas, son dos valores. Buscalos.
3.- Si no encuentras la combinación con dos valores, serán tres, y así sucesivamente.


ejemplo según los datos que aportas
Buscamos 29 , con la suma de dos valores
el primer valor será el 1[4], el ultimo el 4[25] ya que es el previo menor.
Sumamos y a la primera.

Buscamos el 45 con dos valores:
el primer valor será el 1[4], el ultimo el 6[36]
Sumamos 4+36, diferente y menor, pasamos a 2[13]+6[36] es mayor,, pasamos a 2[13]+5[32] = 45 OK.
Si seguimos hasta que los valores sean contiguos y o nos quedamos cortos o no llegamos, la combinación pasará por la suma de tres valores.

Buscamos 96
Suponemos que la iteración con dos valores no ha sido satisfactoria.
Pasamos a buscarlo con tres valores.
Primer valor 1[4] y ultimo >10[x]
hacemos todas las combinaciones posibles con el 1 y >10, es decir 1º+2º+x, 1º+3º+x, 1º+4º+x, ... Si no encontramos el valor y terminamos las combinaciones, empezamos lo mismo con el primer valor, y uno menos el mayor. Volvemos a hacer la iteración, bajamos uno el mayor.
Al cabo de un par de iteraciones, ya tendremos el primero 1[4] y el mayor el 7[51], que combinaremos con el 2, 3, 4, 5, 6, y 7. Como no lo encontramos, pasamos a primero 1[4] y el mayor el 7[51], sumamos 4+13+51, 4+18+51, 4+25+51, pasamos a primero 1[4] y el mayor el 6[36], etc. Cuando tengamos hecho todo, pasamos a primero el 2[13] y mayor el 8[68]. Hacemos 13+18+68, y nos hemos pasado. Bajamos el mayor pasamos a primero el 2[13] y mayor el 7[51]. Hacemos 13+18+51 , 13+25+51, 13+32+51 y tararí, encontrado.

Si no encontrasemos una combinación, el resultado sería de 4 sumandos, y así sucesivamente.

ADemás valoraría si a partir de 4 podría usar la función recursivamente, aunque tengo mis dudas.

Bueno, perdona la chapa, espero haberte ayudado y no estar confundido, pensando que es más fácil de lo que realmente es, igual que te pasó a ti en un principio.

Suerte y saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita