博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断一个数组,是否可以分成两个数组之和相等的数组
阅读量:2382 次
发布时间:2019-05-10

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

题目:

判断给定的一个数组,是不是可以分成两个数组之和相等的数组

Example:

[1,2,6,3]可以分成[1,2,3]和[6]

解析:

此题可以用0,1背包问题来解决,分成的两个数组之和,一定为整个数组之和的一半,所以将背包容量设为初始数组之和的一半即可,最后在判断背包所装的容量是不是整个数组之和的一半。

代码:

#include 
#include
#include
using namespace std;int main(){ int n; cin >> n; vector
a(n); int sum = 0; for (int i = 0; i < n; ++i) { cin >> a[i]; sum += a[i]; } vector
> dp(n + 1, vector
(sum / 2 + 1, 0)); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= sum / 2; ++j) { if (j >= a[i - 1]) dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - a[i - 1]] + a[i - 1]); else dp[i][j] = dp[i - 1][j]; } } bool flag = (sum - 2 * dp[n][sum / 2] == 0); if (flag) cout << "YES" << endl; else cout << "NO" << endl; return 0;}

转载地址:http://avwab.baihongyu.com/

你可能感兴趣的文章
哪些领域的应用因为大数据变得更聪明?
查看>>
大数据驱动电信运营商转型
查看>>
玩转大数据 运动员如何用科技提升成绩
查看>>
广发银行试水大数据 “精细服务”现雏形
查看>>
大数据让社区生活更方便
查看>>
借助互联网大数据打假
查看>>
东信北邮大数据项目获2014中国通信学会科学技术一等奖
查看>>
大数据塑造新时代公共外交
查看>>
海-两篇
查看>>
整理硬盘
查看>>
ERP&SCM&MES發展歷程
查看>>
风-----
查看>>
系统Server架构图
查看>>
我的简历
查看>>
一种自适应的柔性制造系统优化调度算法
查看>>
现代管理思想与总图设计
查看>>
原创BPR之企业流程分析模型图 FDD
查看>>
PLM技术促进现代模具企业精益化和规模化
查看>>
独一无二的IFS CAD与PDM集成工具发布
查看>>
BPR-FDD 模型图原始档
查看>>