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);
}
}
}