Java 仅使用一个循环将数组分成两个等和部分,需要另一种方法
通常我们做的是 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 同样,两部分之和应该相等,而不是长度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
这是上面一个简单的幻觉示例假设整个序列的总数为N。实际上,您正在寻找一个子序列,其总和为N/2。注:如果N为奇数,则不存在此类子序列
这就是子集和问题。目前有一个不错的Java解决方案。一般来说,不可能用相等的和将数组分成两部分。在您的案例中,这样的分区保证存在吗?为什么?只有和应该相等,而不是数组长度。一般来说,这是不可能的。考虑1, 3, 9。这是数组元素将以这样的方式输入的基本事情,即使用这些数组元素的2等量是可能的,考虑我的第二示例3, 5, 5、3, 10。10是的,显然,如果数组元素的和不能被分成2个相等的和,那么程序将无法打印。为什么要分割数组?你能解释一下吗that@Umesh帕萨克