• Sábado 21 de Diciembre de 2024, 13:10

Autor Tema:  Suma De Enteros O Particiones De 1 Numero  (Leído 1756 veces)

aerys

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Suma De Enteros O Particiones De 1 Numero
« en: Miércoles 9 de Enero de 2008, 13:19 »
0
Hola a todos,

Tengo problemas al generar todas las sumas posibles de 1 número entero dado, p ej 5, en 1 array de una long, p ej 4 de esta forma: 0 0 0 5, 0 0 1 4, 0 1 2 2 ..... 5 0 0 0

Necesito generar todas las combinaciones, aunque lo he hecho mediante recursividad, el problema es que genero muchisimas más cosas que son totalmente incorrectas o bien duplicados de soluciones anteriores.

Aqui os dejo mi código, ¿Se os ocurre una forma de resolver el problema? ya no se que como implementarlo llevo varias semanas con el mismo problema y no consigo una solucion correcta. En principio ni siquiera haría falta recursividad, pero no se como hacerlo.

Con este codigo acepta, p ej 4 4 4 4 cuando obviamente eso no suma 5 ni en broma.. :( con lo que genera muchisimas mas combinaciones de las necesarias, pero no se como regularlo.

Cualquier ayuda sería fantástica.

Huecos es el array de enteros, valor el numero 5 en el ejemplo el numero máximo y longitud la longitud del aray

public static void generar(int[] huecos, int longitud,int valor, List datox, int fila_actual,List fila){

        if (valor == 0){
            //tenemos 1 solucion q es vacio
                fila.add(generar_hijos(datox,fila_actual,huecos));
        }else{
           
            for (int i=(longitud-1); i>=0; i--){
                for (int j=0; j < valor; j++){
                    huecos=j;
                    if (i==0){                
                        /* Caso Base de la i  Añadimos soluncion */
                        fila.add(generar_hijos(datox,fila_actual,huecos));
                    }else{
                        generar(huecos,i,valor-j,datox,fila_actual,fila);
                    }
                }
            }

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Suma De Enteros O Particiones De 1 Numero
« Respuesta #1 en: Sábado 24 de Mayo de 2008, 15:37 »
0
Este tipo de problemas se presenta cuando se plantea mal un problema. Hay que diferenciar claramente cuando un problema necesita recursividad y cuando iteración controlando las variables a cada caso.

En este caso concreto yo utilizaría tanto recursividad como iteración... la recursividad por ejemplo para usar diferentes operandos, desde las sumas monarias hasta las sumas de todos los operandos (tantos como el valor máximo empleado), además emepzaría desde el final y acabaría cuando el nº de operandos fuera 0.
«Ma non troppo»
----> ModoVacaciones = False<----