3508855 2008-11-13 20:19:00
点我顶贴
收藏
删除
program fafd;
var
f:array[0..36001] of boolean;
m,n,i,j,x:integer;
begin
readln(m,n);
fillchar(f,sizeof(f),false);
f[0]:=true;
for i:=1 to n do begin
read(x);
for j:=m downto x do
if f[j-x] then f[j]:=true;
end;
for i:=m downto 1 do
if f[i] then begin
writeln(i);
halt;
end;
end.
#5 飞雪天涯@2008-10-22 07:01:00
7128
回复
删除
#define MAXT 35000
#define MAXN 21
#include<iostream>
using namespace std;
int T,N,dp[MAXT+1],t[MAXN+1],v[MAXN+1];
int main (void)
{
cin>>T>>N;
for (int i=1;i<=N;i++)
cin>>t[i],v[i]=t[i];
for (int j=1;j<=N;j++)
for (int i=T;i>=t[j];i--)
if (dp[i-t[j]]+v[j]>dp[i])
dp[i]=dp[i-t[j]]+v[j];
cout<<dp[T];
return 0;
}