Buenas noches comunidad , tengo un problema con este ejercicio de recursividad , la vdd no se me da muy bien este temam el ejercicio consiste en hallar todas las posibles soluciones de la suma de un vector que tengan como resultado un numero n ejemplo
Ejm: Si V: 8, 2, 3, 3, 6, 4. y X=13
Soluciones:
3+6+4 = 13
8+2+3=13
este es el codigo que eh hecho hasta ahora pero solo estoy tirando flechas :/
Código:
#include<iostream>
using namespace std;
int sumar(int V[6]){
int acumulado = 0;
int longitud_vector = 6;
for( int i=0; i<longitud_vector; i++){
acumulado += V[i];
}
return acumulado;
}
void imprimir(int sol[6]){
cout<<"Solucion"<<endl;
int longitud_vector = 6;
for( int i=0; i<longitud_vector; i++){
if(sol[i] != 0){
cout<<sol[i]<<" + ";
}
}
}
void imprimir_disp(bool disp[6]){
int longitud_vector = 6;
for( int i=0; i<longitud_vector; i++){
if(disp[i] == true){
cout<<1<<" ";
}else{
cout<<0<<" ";
}
}
cout<<endl;
}
void imprimir_sol(int sol[6]){
int longitud_vector = 6;
for( int i=0; i<longitud_vector; i++){
cout<<sol[i]<<" ";
}
cout<<endl;
}
void vaciar_vector_sol(int sol[6]){
int longitud_vector = 6;
for( int i=0; i<longitud_vector; i++){
sol[i] = 0;
}
}
void reiniciar_disp(bool disp[6]){
int longitud_vector = 6;
for( int i=0; i<longitud_vector; i++){
disp[i] = true;
}
}
void suma2 (int V[6], int obj, bool disp[6] , int sol[6] ,int etapa) {
int longitud_vector = 6;
for( int i=0; i<longitud_vector; i++){
if( (disp[i]==true) && ( (sumar(sol)+V[i]) <= obj) ) {
disp[i] = false;
sol[i] = V[i];
/*Si la suma de los elementos del vector de
solucion es igual a el resultado buscado */
if (sumar(sol) == obj ){
cout<<"\n=>";
imprimir(sol);
}else{ //si no, se hace un llamado recursivo de la funcion para buscar esa solucion
suma2(V,obj,disp,sol,etapa+1);
}
}
}
}
void suma(int Vector[6], int x)
{
bool Disponibles[6];
int Solucion[6] ,i;
int longitud_vector = 6;
//cambio todas las pocisiones del vector ah verdadero
for(i=0; i<longitud_vector; i++){
Disponibles[i] = true;
Solucion[i] = 0;
}
suma2(Vector,x,Disponibles, Solucion, 0);
}
int main(){
int Vector[6] = {8,2,3,3,6,4}; //vector
//int Vector[6] = {6,4,3,3,5,3}; //vector
int longitud_vector = 6;
//cout<<"hola "<<longitud_vector<<endl;
suma(Vector,13);
system("pause");
return 0;
}
de verdad muchas gracias de antemano y espero puedan ayudarme