Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Algoritmo (https://www.clubdelphi.com/foros/showthread.php?t=68037)

NEG1414 20-05-2010 21:09:11

Algoritmo
 
Buenas

No se si es el lugar indicado para preguntar lo siguiente


Lo que intento es descomponer un numero en todos sus sumatorios pero siendo la primera cifra siempre la misma, es decir
por ejempol Numero 11,Primera cifra 6

6-1-1-1-1-1
6-1-1-1-1-2
6-1-1-2-1
6-1-1-3
......
.......
6-2-1-1-1
6-2-2-1
6-2-3
.....
.....
6-5


He creado el siguiente algoritmo recursivo

Código:

Principal()
{
        Sumandos(11,1,6,"6 ");
}
                       

Sumandos(int Nv,int i,int Sum,AnsiString s)
{
  if(Sum==Nv)
    {
      Memo1->Lines->Add(s);
    }

  for (int a=Sum;a<Nv; a++)
    {
      Sumandos(Nv,i++,Sum+i,s+IntToStr(i)+" ");
    }
}

Pero el resultado solo es:

6 1 1 1 1 1
6 1 1 1 2
6 1 1 3
6 1 2 2
6 1 4
6 2 3
6 5

Me faltan combinaciones ejp 6-2-2-1

Alguna idea Gracias

elarys 20-05-2010 21:55:46

tenes que dar todas las posibles convinaciones?
el numero final lo sabes o te lo pasan por algun lado?
y el numero que tomas vos como primera cifra la sabes tambies o es solo un ejemplo?
se ve muy complicado

maeyanes 20-05-2010 22:17:47

Hola...

Según los resultados que pusiste, veo que tu código está bien, ya que 6 2 2 1 = 6 1 2 2, o sea, son los mismos sumatorios, solo que en otro orden. ¿Es así como lo necesitas o necesitas todas las posibles combinaciones de los sumatorios (Ej. 6 2 2 1, 6 2 1 2, 6 1 2 2)?


Saludos...

NEG1414 20-05-2010 23:30:05

Gracias por contestar

Necesito todas las posibles combinaciones tanto en un orden como en el otro,
y Nv seri el numero Suma y en la primera llamada al procedimiento Sum tendria el valor de la primera cifra del sumatorio

Espero haberme explicado bien.

elarys 21-05-2010 17:26:01

con el algoritmo que mostraste ya obtuviste los resultados luego los tomaria como cadenas de caracteres
e iria remplazando un caracter por otro, ya que el valor de cada numero no cambia solo cambia su posicion

gonzalo_enero 10-06-2010 22:05:51

Creo que entendí tu problema ?
 
Tu combinacion deberia ser esta ?
6 1 1 1 1 1
6 1 1 1 2
6 1 1 3
6 1 2 2
6 1 4
6 2 1 1 1
6 2 1 2
6 2 2 1
6 2 3
6 3 1 1
6 3 2
6 5
es un algoritmo de serie ... aunque va en un valor -1
eso me da a entender de que es tu tarea de la U o algo parecido
jajajajaja .... entonces estas llevando el tema de recursividad ?

la septima linea que complete de ejemplo esta bien ? (asi debe estar ordenado?)

ahora se reducen a tres posibilidades de interpretarlo tu problema
solo asi podre cooperarte ya que varia mucho el codigo...

gonzalo_enero 10-06-2010 22:07:07

este ejemplo creo que es lo volvi a revisar
 
6 1 1 1 1 1
6 1 1 1 2
6 1 1 3
6 1 2 2
6 1 4
6 2 1 1 1
6 2 1 2
6 2 2 1
6 2 3
6 3 1 1
6 3 2
6 4 1
6 5


La franja horaria es GMT +2. Ahora son las 02:39:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi