Recursividad y suma de numeros
Publicado por rosa (2 intervenciones) el 04/01/2008 23:08:32
Hola y Feliz Año Nuevo!
Estoy intentando hacer una funcion que dado un array de enteros y un valor, p ej 10 calcule todas las formas posibles de hallar esa suma, esto es para un array de enteros de tam 4, haga por ejemplo 1 +3+4+2 que sumaria valor que es 10, tambien vale 0 0 0 10
El algoritmo que he hecho no consigo que funcione.. ya que acepta cosas como por ejemplo 9 9 9 9 que obviamente no suma 10, pero no se como solucionarlo!
Cualquier aclaración, ayuda consejo sería estupendo.
Aqui dejo la funcion, donde huecos es el array de enteros y valor, el numero que deben sumar.
public static void generar(int[] huecos, int longitud,int valor, List datox, int fila_actual,List fila){
//System.out.println("longitud: "+longitud + "valor " +valor);
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[i]=j;
if (i==0){
/* Caso base para la i * /
}else{
generar(huecos,i,valor-j,datox,fila_actual,fila);
}
}
}
}
}
Estoy intentando hacer una funcion que dado un array de enteros y un valor, p ej 10 calcule todas las formas posibles de hallar esa suma, esto es para un array de enteros de tam 4, haga por ejemplo 1 +3+4+2 que sumaria valor que es 10, tambien vale 0 0 0 10
El algoritmo que he hecho no consigo que funcione.. ya que acepta cosas como por ejemplo 9 9 9 9 que obviamente no suma 10, pero no se como solucionarlo!
Cualquier aclaración, ayuda consejo sería estupendo.
Aqui dejo la funcion, donde huecos es el array de enteros y valor, el numero que deben sumar.
public static void generar(int[] huecos, int longitud,int valor, List datox, int fila_actual,List fila){
//System.out.println("longitud: "+longitud + "valor " +valor);
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[i]=j;
if (i==0){
/* Caso base para la i * /
}else{
generar(huecos,i,valor-j,datox,fila_actual,fila);
}
}
}
}
}
Valora esta pregunta


0