#include<iostream>
using namespace std;
int n,v,ans;
int w[25],sum[25];
void dfs(int i,int cnt)
{
if(i==0)
{
ans=max(cnt,ans);
return;
}
//结果等于总重量的一般或者当前重量与剩余重量的和小于或等于结果,不用比较
if(ans==v || cnt+sum[i]<=ans)
return;
if(cnt+w[i]<=v)
dfs(i-1,cnt+w[i]);
dfs(i-1,cnt);
}
int main()
{
int i;
while(cin>>n)
{
ans=0;
sum[0]=0;
for(i=1;i<=n;i++)
{
cin>>w[i];
sum[i]=sum[i-1]+w[i];
}
v=sum[n]/2;
dfs(n,0);
cout<<sum[n]-2*ans<<endl;
}
return 0;
}
zb的生日
最新推荐文章于 2018-05-09 23:16:03 发布