邮票分你一半

来源:互联网 发布:dotamax查不到数据 编辑:程序博客网 时间:2024/05/04 02:48

邮票分你一半

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述
     小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明。每张邮票上都有分值,他们想把这些邮票分成两份,并且使这两份邮票的分值和相差最小(就是小珂得到的邮票分值和与小明的差值最小),现在每张邮票的分值已经知道了,他们已经分好了,你知道最后他们得到的邮票分值和相差多少吗?
输入
第一行只有一个整数m(m<=1000),表示测试数据组数。
接下来有一个整数n(n<=1000),表示邮票的张数。
然后有n个整数Vi(Vi<=100),表示第i张邮票的分值。
输出
输出差值,每组输出占一行。
样例输入
252 6 5 8 932 1 5
样例输出
02
用01背包的思想,可以把他们分为容量为sum/2的背包,尽可能的装满,这就会减小它们之间的差距
#include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>using namespace std;int dp[10100];int a[1010];int main(){    int t;    scanf("%d",&t);   int n;    while(t--)    {        scanf("%d",&n);        int s;        memset(dp,0,sizeof(dp));        s=0;        for(int i=0; i<n; i++)        {            scanf("%d",&a[i]);            s=s+a[i];        }       for(int i=0;i<n;i++)       {           for(int j=s/2;j>=a[i];j--)           {               dp[j]=max(dp[j],dp[j-a[i]]+a[i]);           }       }       int sum=fabs(s-dp[s/2]-dp[s/2]);       printf("%d\n",sum);    }}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 笔记本电脑按键坏了怎么办 电视主板坏了怎么办 面包车电量亏电怎么办 自动挡汽车亏电怎么办 自动挡亏电了怎么办 面包车打不起火怎么办 汽车电瓶亏电怎么办 小车电池没电怎么办 汽车电瓶有电打不着火怎么办 汽车电瓶没电打不着火怎么办 汽车电池没电打不着火怎么办 汽车电瓶亏电打不着火怎么办 自动挡电瓶没电打不着火怎么办 自动挡车子没电打不着火怎么办 自动挡汽车没电打不着火怎么办 自动挡汽车有电打不着火怎么办 p0846骐达故障怎么办 汽车冷却液漏了怎么办 冷却液管子漏了怎么办 电脑网络不可用怎么办 手表带子坏了怎么办 这几天生意不好怎么办 大学不想住宿舍怎么办 在北京买车后被骗怎么办 联通套餐不到期怎么办 联通全国流量包怎么办 缤智车钥匙丢了怎么办 车遮阳板松了怎么办 洗车把内饰划了怎么办 新车销售没销量怎么办 住院时间重叠了怎么办 长安cs75油耗高怎么办 墙内线烧了怎么办 如果没买票想进高铁站怎么办 老赖拒绝还款怎么办 gta5资产不兼容怎么办 平板黑屏闪退怎么办 施工证学历不够怎么办 隧道放炮声大怎么办 58工作被骗了怎么办 学历国家不承认怎么办