Ver Mensaje Individual
  #5  
Antiguo 24-05-2007
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Reputación: 20
sinalocarlos Va por buen camino
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');        //        PRINT(A[])
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

Última edición por sinalocarlos fecha: 24-05-2007 a las 01:55:30.
Responder Con Cita