zoukankan      html  css  js  c++  java
  • 挤牛奶

    挤牛奶

    Description

    小卡卡终于帮农夫John找到了走丢的那一头奶牛,John为了感谢小卡卡,不仅告诉了他在 Pascal山脉上可能存在Pascal圣地最大的宝藏,还说要请小卡卡喝牛奶。可是农夫John发现他家里所储藏的牛奶已经喝光了,所以要临时给奶牛挤奶。小卡卡实在是太好心了,说要帮农夫John一起挤牛奶。John答应了,他把他的n头奶牛中的n/2头(n是个偶数)分给小卡卡挤,他自己挤剩下的n/2头奶牛。但是每一头奶牛都有不同的产奶量,农夫John为了让小卡卡减轻负担,他希望他们两个所挤的牛奶的总量之差最小。小卡卡得知了每头奶牛的产奶情况之后很快就解决了这个问题。

    Input

    测试数据第一行一个整数n,n为偶数且小于100。表示有n头奶牛。第二行n个整数分别给出每头奶牛的产奶量(产奶量的总和不超过2000)。

    Output

    输出小卡卡和农夫所挤的牛奶量的最小差值。

    Sample Input

    6
    7 9 2 6 4 2
    

    Sample Output

    0
    
    

    HINT

    Source

    #include<bits/stdc++.h>
    using namespace std;
    bool f[101][2001];
    int n,a[101];
    int abbs(int x,int y)
    {
        if(x-y>0) return x-y;
        else return y-x;
    }
    int main()
    {
        cin>>n;
        int sum=0;
        for(int i=1;i<=n;i++)
        {
           scanf("%d",&a[i]);
            sum+=a[i];
        }
        memset(f,0,sizeof(f));
        f[0][0]=1;
         for(int i=1;i<=n;i++)
            for(int j=n;j>=0;j--)
                for(int k=2000;k>=0;k--)
                    if(f[j][k]==1)
                        f[j+1][k+a[i]]=1;
        int ans=sum;
        for(int i=0;i<=sum;i++)
        if(f[n/2][i]==1)
        {
            if(ans>abbs(i,sum-i))
            {
                ans=abbs(i,sum-i);
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    /**************************************************************
        Problem: 1608
        User: LJA001162
        Language: C++
        Result: 正确
        Time:40 ms
        Memory:1736 kb
    ****************************************************************/
    
  • 相关阅读:
    MYBATIS 的parameter
    深入了解MyBatis参数
    js之onload事件的一点使用心得
    js中document.write的那点事
    MyBatis直接执行SQL查询及批量插入数据
    ng 服务
    ng json格式的序列化和反序列化
    ng 自定义过滤器的创建和使用
    ng 过滤器
    ng 双向数据绑定 实现 注册协议效果
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11867859.html
Copyright © 2011-2022 走看看