题目描述:给出一些不同面值的硬币,每个硬币只有一个。将这些硬币分成两堆,并且两堆硬币的面值和尽可能接近。

分析:将所有能够取到的面值数标记出来,然后选择最接近sum/2的两个面值

状态表示:d[j]表示用当前给定的硬币是否可以凑得总面值j

转移方程:d[j]=d[ j-coin[i] ]

开始时只取出硬币coin[0],判断它是否能凑得总面值j

每新加入一个硬币coin[i]时,判断所有已经取出的硬币能否凑得总面值j

 #include <iostream>
#include <cstdio>
#include <string.h>
#include <cmath>
#include <algorithm>
using namespace std; bool dp[];
int coin[];
int n,sum;
int main()
{
int t,i,j;
scanf("%d",&t);
while( t--)
{
scanf("%d",&n);
sum =;
for( i=; i<n; i++)
{
scanf("%d",&coin[i]);
sum+= coin[i];
}
memset( dp,, sizeof( dp));
dp[]=;
for( i=; i<n; i++)
for( j=sum;j>=coin[i]; j--)
if( !dp[j]) dp[j] =dp[j-coin[i]];
for( i=sum/; i>=;i--)
if( dp[i])
{
printf("%d\n",sum-i-i);
break;
}
}
return ;
}

最新文章

  1. iscroll5实现一个下拉刷新上拉加载的效果
  2. salesforce 零基础学习(三十七) DML及Database方法简单描述
  3. CentOS的包/库的找的地方
  4. line-height让文本在块级元素中居中显示总结
  5. 错误“Unexpected namespace prefix &quot;xmlns&quot; found for tag LinearLayout”的解决方法
  6. jQuery取CSS的HEX(16位)颜色值
  7. C++学习路线
  8. logstash 判断接口响应时间发送zabbix告警
  9. 【转】ubuntu设置PATH----不错
  10. opencv中的meanshift图像切割
  11. Chapter 2 Open Book——15
  12. 英语学习/词典app行业top5简要分析
  13. nyoj_471:好多的树(容斥原理)
  14. Python3-大魔王小项目-田忌赛马
  15. JDBC测试计划-连接mysql
  16. JS创建对象,数组,函数的三种方式
  17. Mathmatica简介
  18. select for update引发死锁分析
  19. 2017第八届蓝桥杯C/C++ B组省赛-日期问题
  20. HDU 5840 This world need more Zhu 树链剖分+暴力

热门文章

  1. (1)c语言学习总结之从关键字到循环结构
  2. Redis 五:配置主从复制功能
  3. Hadoop之Hive UDAF TopN函数实现
  4. 用Swift重写公司OC项目(Day1)--程序的AppIcon与LaunchImage如何设置
  5. [转]rpcndr.h和wtypes.h冲突Bug的解决方案
  6. 不同系统间传输float型数据
  7. VBS数组函数学习实例分析
  8. 受限玻尔兹曼机RBM—简易详解
  9. 13、主线程任务太多导致异常退出(The application may be doing too much work on its main thread)
  10. cygwin chmod 失效