简单DP Stone Pile Ural_1005

来源:互联网 发布:刷微信阅读量软件 编辑:程序博客网 时间:2024/06/06 16:39
#include <stdio.h>
#include <string.h>
int xxx(int a)
{
return a>0?a:-a;
}
int dp[2000000];
int main()
{
int n;
int i;
int w[25];
int half;
int tot;
int min;
while(scanf("%d",&n)!=-1)
{
half=0;tot=0;
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
{
scanf("%d",&w[i]);
tot+=w[i];
}
half=tot/2;
min=1000000;
for(i=0;i<n;i++)
for(int j=tot;j>=w[i];j--)
dp[j]=dp[j]>dp[j-w[i]]+w[i]?dp[j]:dp[j-w[i]]+w[i];
for(i=half;i>=0;i--)
if(xxx(tot-2*dp[i])<min)
min=xxx(tot-2*dp[i]);
printf("%d\n",min);
}
return 0;
}
0 0
原创粉丝点击