将一个数组划分成总和相等的两部分(分割数组)

思想
1. 先求和sum/2,判断是否可分割
2. 递归求和

c++代码

include <iostream>
include<list>
using namespace std;int getSum(int A[], int len)
{int sum = 0;for (int i = 0; i<len; i++){sum += A[i];}return sum;
}bool foo(int A[], int len, int curSum, int defSum, int B[], int curPos)
{if (curSum == defSum){return true;}if (len == 0)return false;bool bFound = false;for (int i = 0; i < len; i++){if (curSum + A[i] <= defSum){B[curPos++] = A[i];if (foo(&A[i+1], len - 1, curSum + A[i], defSum, B, curPos)){bFound = true;break;}B[curPos] = 0;curPos--;}}return bFound;
}void main()
{int Array[1000]; int length;while (cin >> length){for (int i = 0; i < length; i++){cin >> Array[i];}int B[500];int sum = getSum(Array, length);if (sum % 2 == 0){bool JudgeSuccess = foo(Array, length, 0, sum / 2, B, 0);if (JudgeSuccess)cout << "True" << endl;elsecout << "False" << endl;}elsecout << "False" << endl;}system("pause");
}

将一个数组划分成总和相等的两部分(分割数组)相关推荐

  1. LeetCode 2206. 将数组划分成相等数对

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums ,它包含 2 * n 个整数. 你需要将 nums 划分成 n 个数对,满足: 每个元素 只属于一个 数对. 同一数对中的元素 ...

  2. LeetCode-2206. 将数组划分成相等数对_Python

    给你一个整数数组 nums ,它包含 2 * n 个整数. 你需要将 nums 划分成 n 个数对,满足: 每个元素 只属于一个 数对. 同一数对中的元素 相等 . 如果可以将 nums 划分成 n ...

  3. char数组转换成字符串_将字符串转换为char数组java –将字符串转换为char

    char数组转换成字符串 Sometimes we have to convert String to the character array in java programs or convert ...

  4. java两个有序数组的初始化_leecode:88–合并两个有序数组 | 星尘

    给定两个有序整数数组 nums1和 nums2,将 nums2合并到 nums1中,使得 num1成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. 你可以 ...

  5. java 16进制数组 字符串_byte数组转换成16进制字符串和字符数组的方法

    byte数组转换成16进制字符串String: public class CommonUtil { /** * byte数组转换成16进制字符串 * @param src * @return */ p ...

  6. java的byte[]数组转成字符串并且再转回byte[]数组

    byte[] bytes=new byte[] {-58,-85,55,7}; Arrays.toString(bytes) /*** 解码byte[]数组的字符串变成byte[]* @param b ...

  7. 将一个数组划分为和差值最小的子数组

    要求:将数组中的数划分为两组,使得两个子数组的和的差值最小,数组中的数的取值范围为0<X<100,元素个数也是大于0小于100.如:a[]={2,4,5,6,7},得出的两组数:{2,4, ...

  8. javascript字典中添加数组_在javascript中合并两个字典数组

    您可以使用 Array#map方法生成新数组(假设两个数组的顺序相同). var lat = [{key:"2017-09-20T11:51:32.000Z", value:50. ...

  9. java字节数组转换成16进制_Java 将字节数组转化为16进制的多种方案

    很多时候我们需要将字节数组转化为16进制字符串来保存,尤其在很多加密的场景中,例如保存密钥等.因为字节数组,除了写入文件或者以二进制的形式写入数据库以外,无法直接转为为字符串,因为字符串结尾有\0,当 ...

  10. 寻找两个有序数组的中位数(附上三种解法)

    目录 •写在前面 •题目 •解法一 •解法二 •解法三 •结束 •写在前面 这道题比较经典,我当时在做的时候,想出了两种解决方案,不过总感觉算法不够优美,所以找到了另一种我觉得非常精妙的解法,利用了K ...

最新文章

  1. GridView,Repeater分页控件:WebPager(开源)
  2. 解决 VSCode 编写 C++11 代码报红问题
  3. 如果科学家封神,会有什么称号?
  4. codeforces B. Strongly Connected City(dfs水过)
  5. poj1006生理周期(中国剩余定理)
  6. OpenJudge——0003:jubeeeeeat
  7. 如何写出一个较好的快速排序程序
  8. Wget 命令用法详解
  9. 嵌入式电路设计(外围模块)
  10. GitHub使用笔记
  11. 什么软件能测试显卡功耗,如何在win10中检查计算机的显卡功耗
  12. linux ps auxf,ps -aux命令详解
  13. Python 读取/处理 s2k/$2k 文本文件
  14. fanuc机器人四边形编程_FANUC机器人编程及应用
  15. 某些特殊悼念日的时候,让个人网页风格变黑灰色
  16. “佩奇”刷爆朋友圈 “野猪”占领美术馆空间
  17. 360路由器故障显示DNS服务器,360安全路由器dns异常解决方法
  18. uint8_t / uint16_t / uint32_t /uint64_t 数据类型集中网上的解释
  19. android emoji吏上最全的详解
  20. Daughter of Deceit

热门文章

  1. linux 键盘描述符,USB HID Report Descriptor 报告描述符详解
  2. Molecule在GitHub与Gitee正式开源
  3. HDU 6070 线段树
  4. 计算机主机组装图,自己如何组装电脑主机?diy电脑组装教程图解详细步骤+装机心得(5)...
  5. 编程都是人上人,果不其然!2020年度十大高薪岗位,程序员独领风骚!
  6. [生存志] 第57节 孔子微言春秋大义
  7. 如何恢复Windows自动更新?
  8. 学习方法——TRIZ创新理论中的八大法则
  9. Codeforces 633H Fibonacci-ish II【线段树】
  10. 集合的三种遍历方式/集合的嵌套/产生任意范围内的随机数