![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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 - |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Suma de 100 tablas dbf | Jucho69 | Conexión con bases de datos | 5 | 18-01-2007 20:20:35 |
| suma con decimales | Jheysson13 | SQL | 2 | 28-11-2006 09:02:26 |
| Suma de un campo | silviodp | Conexión con bases de datos | 13 | 11-06-2004 16:51:23 |
| suma de un campo sql | noe | SQL | 16 | 19-01-2004 18:52:54 |
| Suma de agrupados... | Tanix | Impresión | 2 | 19-01-2004 12:45:45 |
|