• 1007 正整数分组


    1007 正整数分组

    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题

    将一堆正整数分为2组,要求2组的和相差最小。
    例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。
     

    Input

    第1行:一个数N,N为正整数的数量。 第2 - N+1行,N个正整数。 (N <= 100, 所有正整数的和 <= 10000)

    Output

    输出这个最小差

    Input示例

    5

    1

    2

    3

    4

    5

    Output示例

    1

     

     

    //题解:因为数据范围极小,所以是dp的简单变动,先算出可以组成哪些数,然后,枚举一下所有情况即可

     1 #include<iostream>
     2 #include<cmath>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cstdio>
     6 #include<vector>
     7 using namespace std;
     8 #define INF 0x3f3f3f3f
     9 #define N 1005
    10 
    11 int num[N];
    12 int dp[10005];
    13 
    14 int main()
    15 {
    16     int n;
    17     scanf("%d",&n);
    18     int all=0;
    19     for (int i=1;i<=n;i++)
    20     {
    21         scanf("%d",&num[i]);
    22         all+=num[i];
    23     }
    24     int ut = all/2;
    25     dp[0]=1;
    26     for (int i=1;i<=n;i++)
    27     {
    28         for (int j=ut;j>=num[i];j--)
    29         {
    30             if (dp[j-num[i]]) dp[j]=1;
    31         }
    32     }
    33     int ans = INF;
    34     for (int i=1;i<=ut;i++)
    35     {
    36         if (dp[i]) ans=min(ans,(all-i)-i);
    37     }
    38     printf("%d
    ",ans);
    39     return 0;
    40 }
    View Code

     

     

  • 相关阅读:
    二分和三分
    windows对拍及其应用
    RMQ与st表
    图论最短路
    图论最小生成树
    贪心问题
    [转载]图论500题
    第二次重建博客。。
    二分和三分题
    树状数组
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/7474803.html
Copyright © 2020-2023  润新知