RNQ PID39 饮食问题

 

 //DP

 

function max(a,b:longint):longint;
begin
    if a>b then exit(a) else exit(b);
end;

var
    a:array[0..40000] of longint;
    i,j,x,mx,c,b:longint;
begin
    readln(c,b);
    a[0]:=1;  mx:=0;
    for i:=1 to b do
    begin
        read(x);
        for j:=mx downto 0 do
            if(a[j]=1)and(j+x<=c) then begin a[j+x]:=1; mx:=max(mx,j+x); end; 
    end;
    writeln(mx);
end.

 

 

 

 

//DFS

 

var
    a:array[1..40] of longint;
    i,j,x,mx,c,b:longint;

procedure DFS(n,x:longint);
begin
    if n=b+1 then exit;
    if (x<=c)and(x>mx) then mx:=x;
    DFS(n+1,x+a[n+1]);
    DFS(n+1,x);
end;

begin
    readln(c,b);
    for i:=1 to b do read(a[i]);
    mx:=0;
    DFS(0,0);
    writeln(mx);
end.

 

posted @ 2015-06-13 19:55  qilinart  阅读(200)  评论(0)    收藏  举报