阅读背景:

562 - Dividing coins_moyan_min的专栏

来源:互联网 
描述:把硬币平分成两份,寻找与平均数差值最小的就可以
#include <cstdio>
#include <cstring>
bool s[50010];
int num[110];
int main()
{
    int n,t,sum,flag,p,m;
   // freopen("a.txt","r",stdin);
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        sum=flag=m=0;
        for(int i=0; i<n; i++)
        {
            scanf("%d",&num[i]);
            sum+=num[i];
        }
        p=sum/2;
        memset(s,false,sizeof(s));
        s[0]=true;
        for(int i=0; i<n; i++)
        {
            for(int j=p-1; j>=0; j--)
                if(s[j])
                {
                    flag=j+num[i];
                    if(flag<=p&&!s[flag])
                    {
                        s[flag]=true;
                        if(flag>m) m=flag;
                        if(m==p) break;
                    }
                }
            if(m==p) break;
        }
        printf("%d\n",sum-2*m);
    }
    return 0;
}描述:把硬币平分成两份,寻找与平均数差值最小的就可以
#include <cstdio&



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: