用01背包动态规划做啊
附程序:
Var A:Array[1..100] Of Longint;
P:Array[0..100000] Of Longint;
i,j,n,Total,m:LongInt;
Begin
Readln(n);
Total:=0;
For i:=1 To n Do Begin Read(a);inc(Total,a);End;
Fillchar(p,sizeof(p),0);
m:=Total div 2;
For i:=1 To n do
For j:=m Downto 1 do
if (j>=a) And (a+p[j-a]>p[j]) Then p[j]:=a+p[j-a];
Writeln(Total-p[m]);
End.