zoukankan      html  css  js  c++  java
  • 1007 正整数分组 (01背包)

    基准时间限制: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

    坐在那里一晚上,想这道题,dfs,各种都试了,最后感觉有点像01背包,试了一下真的AC了(QAQ)。

    AC:代码

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int v[105],dp[10005];
    int Abs(int a){
    	return a>0?a:-a;
    }
    int main()
    {
    	int t,sum = 0;
    	cin>>t;
    	memset(dp,0,sizeof(dp));
    	for(int i = 0;i<t;i++)
    	{
    		scanf("%d",&v[i]);
    		sum += v[i];
    	}
    	for(int i = 0;i<t;i++){
    		for(int j = sum;j>=v[i];j--){
    			dp[j] = max(dp[j],dp[j-v[i]]+v[i]);
    		}
    	}
    	int minn = 10005;
    	for(int i = 0;i<=sum;i++){
    		if(dp[i]!=0){
    			minn = min(minn,Abs(sum - 2*dp[i]));
    		}
    	}printf("%d
    ",minn);
    	return 0;
    }


  • 相关阅读:
    flash 语法 入门
    flash 代码 雪花飘落
    test windows live writer
    网站索引
    [转]jquery入门简介
    forcast iframe 及 四款播放器
    flash
    flash 备忘
    浏览器默认HTML的CSS样式属性
    简单多线程拷贝单文件示例
  • 原文地址:https://www.cnblogs.com/Nlifea/p/11746023.html
Copyright © 2011-2022 走看看