Necesito un pequeño programa
Necesito un programa que de un conjunto de números dados (hasta 100) muestre los subconjuntos cuya suma sea una determinada.
Os lo agradezco de verdad porque me urge.
Mi jefe quiere que saque, de un montón de facturas de una empresa, las que fueron destinadas a amortización, y como me lo tenga que hacer a huevo, me paso las vacaciones encerrado. Muchas gracias.
Os lo agradezco de verdad porque me urge.
Mi jefe quiere que saque, de un montón de facturas de una empresa, las que fueron destinadas a amortización, y como me lo tenga que hacer a huevo, me paso las vacaciones encerrado. Muchas gracias.
Por una casualidad tengo este programa hecho en recursion.
No se me ocurre pensar cuanto tiempo tardara en correrara N = 100 !
// program k7b11.CPP - page 132
// written in Borland CPP ver 3.1
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#define MAX 6
int a[MAX] = {2,3,7,9,12,15},
p[MAX] = {1,1,1,1,1,1},
b = 24,
sum = 0;
void ShowArray()
{
if(sum)
cout << setw(20) << sum;
else
cout << setw(20) << "given array";
cout << " ---> ";
for(int i = 0;i < MAX;i++)
if(p[i])
cout << setw(6) << a[i];
cout << endl;
} // SHOW ARRAY
void Process(int index)
{
if(sum == b)
{
ShowArray();
return;
}
if(index == MAX || sum > b)
return;
for(int i = index;i < MAX;i++)
{
sum += a[i];
p[i] = 1;
Process(i+1);
sum -= a[i];
p[i] = 0;
}
} // PROCESS
void main()
{
clrscr();
cout << "recursion : for a given array 'a' and a number 'b' find"
<< " a sub array " << endl << " such that sum(a) = b."
<< endl << endl;
ShowArray();
cout << endl;
for(int i = 0;i<MAX;i++)
p[i] = 0;
Process(0);
cout << endl << "end of program - good bye ! ! !" << endl;
getch();
} // MAIN
No se me ocurre pensar cuanto tiempo tardara en correrara N = 100 !
// program k7b11.CPP - page 132
// written in Borland CPP ver 3.1
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#define MAX 6
int a[MAX] = {2,3,7,9,12,15},
p[MAX] = {1,1,1,1,1,1},
b = 24,
sum = 0;
void ShowArray()
{
if(sum)
cout << setw(20) << sum;
else
cout << setw(20) << "given array";
cout << " ---> ";
for(int i = 0;i < MAX;i++)
if(p[i])
cout << setw(6) << a[i];
cout << endl;
} // SHOW ARRAY
void Process(int index)
{
if(sum == b)
{
ShowArray();
return;
}
if(index == MAX || sum > b)
return;
for(int i = index;i < MAX;i++)
{
sum += a[i];
p[i] = 1;
Process(i+1);
sum -= a[i];
p[i] = 0;
}
} // PROCESS
void main()
{
clrscr();
cout << "recursion : for a given array 'a' and a number 'b' find"
<< " a sub array " << endl << " such that sum(a) = b."
<< endl << endl;
ShowArray();
cout << endl;
for(int i = 0;i<MAX;i++)
p[i] = 0;
Process(0);
cout << endl << "end of program - good bye ! ! !" << endl;
getch();
} // MAIN
