Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅使用一个循环将数组分成两个等和部分,需要另一种方法_Java_Data Structures_Logic - Fatal编程技术网

Java 仅使用一个循环将数组分成两个等和部分,需要另一种方法

Java 仅使用一个循环将数组分成两个等和部分,需要另一种方法,java,data-structures,logic,Java,Data Structures,Logic,通常我们做的是 1.我们从左开始计算整个数组的和,称之为Leftsum 2.然后我们从右端开始遍历数组并开始添加 将每个元素转换为RIGHTSUM,并从 左和 3.直到LEFTSUM=RIGHTSUM,然后我们分配迭代器的当前值 变量I到splitpoint 4.现在拆分点索引之前的数组和从拆分点索引到结尾的数组的和相等 主要问题---> 但如果数组是3,5,10,3,10,5,但不是在3,5,5,3,10,10上,这将起作用,因为我们在这里找不到左右数组和相等的拆分点 第二部分的答案也应该是3

通常我们做的是 1.我们从左开始计算整个数组的和,称之为Leftsum 2.然后我们从右端开始遍历数组并开始添加 将每个元素转换为RIGHTSUM,并从 左和 3.直到LEFTSUM=RIGHTSUM,然后我们分配迭代器的当前值 变量I到splitpoint 4.现在拆分点索引之前的数组和从拆分点索引到结尾的数组的和相等

主要问题--->

但如果数组是3,5,10,3,10,5,但不是在3,5,5,3,10,10上,这将起作用,因为我们在这里找不到左右数组和相等的拆分点

第二部分的答案也应该是3,5,10 5,3,10 同样,两部分之和应该相等,而不是长度
这是上面一个简单的幻觉示例

假设整个序列的总数为N。实际上,您正在寻找一个子序列,其总和为N/2。注:如果N为奇数,则不存在此类子序列


这就是子集和问题。目前有一个不错的Java解决方案。

一般来说,不可能用相等的和将数组分成两部分。在您的案例中,这样的分区保证存在吗?为什么?只有和应该相等,而不是数组长度。一般来说,这是不可能的。考虑1, 3, 9。这是数组元素将以这样的方式输入的基本事情,即使用这些数组元素的2等量是可能的,考虑我的第二示例3, 5, 5、3, 10。10是的,显然,如果数组元素的和不能被分成2个相等的和,那么程序将无法打印。为什么要分割数组?你能解释一下吗that@Umesh帕萨克