如何查找数组

时间:2015-05-09 05:23:28

标签: java arrays

如何找到给定数组的所有可能子集的最大 - 最小值之和

例如

给定数组为1 所有可能的子集都是[[],[1]] 1-1 = 0

给定的数组是1 2 所有可能的子集都是[[],[1],[2],[1,2]]    1-1 + 2-2 + 2-1 = 1

给定的数组是1 2 3 所有可能的子集都是[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 1-1 + 2-2 + 2-1 + 3-3 + 3-1 + 3-2 + 3-1 = 6

给定的数组是1 2 3 4 所有可能的子集是[[],[1],[2],[1,2],[3],[1,3],[4],[2,3],[1,4],[1] ,2,3],[2,4],[1,2,4],[3,4],[1,3,4],[2,3,4],[1,2,3,4] ]]  ANS = 23

给定的数组是2 3 4 5 所有可能的子集是[[],[1],[2],[1,2],[3],[1,3],[4],[2,3],[1,4],[5] ],[1,2,3],[2,4],[1,5],[1,2,4],[3,4],[2,5],[1,3,4], [1,2,5],[3,5],[2,3,4],[1,3,5],[4,5],[1,2,3,4],[2,3] ,5],[1,4,5],[1,2,3,5],[2,4,5],[1,2,4,5],[3,4,5],[1] ,3,4,5],[2,3,4,5],[1,2,3,4,5]]  ans = 72

1 个答案:

答案 0 :(得分:2)

首先,对数组进行排序,然后第i个元素在所有不包含rails generate -h Please choose a generator below. Rails: assets controller generator helper integration_test jbuilder job mailer migration model resource scaffold scaffold_controller task 第一个元素的子集中最小,并包含此元素。这些将是i-1。同样,2^(n-i)将是i之后不包含任何数字的每个子集中的最高元素,并且包含i,并且有i个此类子集。现在迭代并为每个2^(i-1)添加:

i

考虑您的示例:sum = sum + array[i] * (2^(i) - 2^(n-i-1)) //if array starts with index array[0]

[1,2,3]