vaya que no gano para erratas este dia
Tienes razon en lo que dices ContraVeneno, son 2,5,7 cometi un error al anotar 1,5,7
Pero tu supuesto de que es lo que se quiere es el correcto, alguna idea??
Modificando un codigo encontrado en una pagina de la cual les devo el link tengo esta funcion:
Código Delphi
[-]
function Tmain_frm.SUMASUB(X:Tarr; k: integer; s:real; r:real; M:real):boolean;
var
res:boolean;
begin
res:=FALSE;
if (s = M) then
begin
showmessage('lo encontro'); res:=TRUE;
end
else
begin
if (s + X[k].valor <= M) then
begin
X[k].elegido := 1;
SUMASUB(X,k + 1,s + X[k].valor,r - X[k].valor, M)
end
else
begin
X[k].elegido := 0;
if ((s + r)>= (X[k].valor )) and ((X[k].valor ) <= (M)) then
SUMASUB(X, k + 1, s, r - X[k].valor, M)
end;
end;
end;
X: arreglo de registros con los campos elegido, valor y el identificador
k: empieza en 1 y sirve como contador
s: aculado del valor sumado
r: total del valor de los elementos que quedan por revisar
M: valor buscado
Saludos
