zoukankan      html  css  js  c++  java
  • 石子归并

    石子归并

    Description

    有一堆石头质量分别为W1,W2,…,Wn.(Wi≤10000),将石头合并为两堆,使两堆质量的差最小。

    Input

    输入第一行只有一个整数n(1≤n≤50),表示有n堆石子。接下去的n行,为每堆石子质量。

    Output

    输出只有一行,该行只有一个整数,表示最小的质量差.

    Sample Input

    5 
    5
    8
    13
    27
    14
    

    Sample Output

    3
    

    HINT

    Source

    #include<bits/stdc++.h>
    using namespace std;
    bool f[500001];
    int n,a[51];
    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]=1;
        for(int i=1;i<=n;i++)
        {
            for(int j=sum;j>=0;j--)
            if(f[j]==1)
            {
                f[j+a[i]]=1;
            }
        }
        int ans=sum;
        for(int i=0;i<=sum;i++)
        if(f[i]==1)
        {
            if(ans>abbs(i,sum-i))
            {
                ans=abbs(i,sum-i);
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    /**************************************************************
        Problem: 1605
        User: LJA001162
        Language: C++
        Result: 正确
        Time:24 ms
        Memory:2024 kb
    ****************************************************************/
    
  • 相关阅读:
    I2C总线之(三)---以C语言理解IIC
    /sys/class/gpio 文件接口操作IO端口(s3c2440)
    CSP-201503
    CSP-201409
    CSP-201412
    Linux命令行学习笔记
    sstream
    VECTOR
    CSP-201403
    CSP-201312
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11867752.html
Copyright © 2011-2022 走看看