#include<iostream>
#include<fstream>
#include<memory.h>
using namespace std;
int n,m;
int a[101];
bool dp[51][22951];
int abs(int s){
if(s<0) return -s;
else return s;
}
void read(){
// ifstream cin("in.txt");
int i,j,k;
while(cin>>n)
{
int sum=0;
for(i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
m=n/2;
memset(dp,0,sizeof(dp));
dp[0][0]=1;
int tmax=0;
for(i=1;i<=n;i++)
for(j=0;j<i&&j<m;j++)
for(k=0;k<=tmax;k++)
if(dp[j][k])
{
dp[j+1][k+a[i]]=1;
tmax=max(k+a[i],tmax);
}
int ans=10000000;
for(k=0;k<=tmax;k++)
if(dp[m][k]&&ans>abs(k+k-sum))
{
ans=abs(k+k-sum);
j=min(k,sum-k);
}
cout<<j<<' '<<sum-j<<endl;
}
}
int main(){
read();
return 0;
}
转载于:https://www.cnblogs.com/zhaozhe/archive/2011/07/10/2102413.html