博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod 正整数分组
阅读量:6441 次
发布时间:2019-06-23

本文共 594 字,大约阅读时间需要 1 分钟。

将一堆正整数分为2组,要求2组的和相差最小。

显然我们可以把所有可能组合成的数求出来。

然后从总和的中间开始往大找,找到了就是其中一个的分组,就可以求出答案了。

#include
#include
#define REP(i, a, b) for(int i = (a); i < (b); i++)using namespace std;const int MAXN = 11234;int f[MAXN], w[MAXN], n, sum;int main(){ f[0] = 1; scanf("%d", &n); REP(i, 0, n) { scanf("%d", &w[i]); sum += w[i]; } REP(i, 0, n) for(int j = sum; j >= w[i]; j--) if(f[j - w[i]]) f[j] = 1; for(int ans = (sum + 1) / 2; ans <= sum; ans++) if(f[ans]) { printf("%d\n", ans - (sum - ans)); break; } return 0; }

 

转载于:https://www.cnblogs.com/sugewud/p/9819440.html

你可能感兴趣的文章
反射动态获取和设置对象的值
查看>>
win10应用商店 天气 日历 照片 感叹号
查看>>
css,高度按宽度比例调整方式
查看>>
ORACLE 11g命令行中上下左右无法使用解决方式
查看>>
JPA注解的使用,用于实体类的注解
查看>>
java基础-反射浅析(磨砺营马剑威java)
查看>>
解决 start.spring.io 不能访问
查看>>
Linux adb insufficient permission
查看>>
WebWorker初体验
查看>>
Java 关键词
查看>>
Apache使用fcgi方式与PHP结合
查看>>
Java命令行运行参数说明大全
查看>>
JavaScript输出一个字符串中出现次数最多的字符
查看>>
[网络通信]同一socket使用两个线程分别收发,如何关闭socket
查看>>
SVN迁移
查看>>
CentOS安装Tomcat后远程无法访问8080
查看>>
cenots下从官网安装composer无法安装的解决办法
查看>>
关于CDockablePane类的创建与使用
查看>>
程序员常用技巧
查看>>
分布式事务-消息补偿机制
查看>>