在java中查找子集

时间:2016-04-10 01:33:39

标签: java arrays algorithm subset

我很熟悉子集是什么,但我很难理解下面有两个子集?有人可以指出我们如何只获得两个子集。我只是觉得它会有更多的子集。

数字m被定义为A的一些子集S的大小,其中每个元素覆盖不间断的整数范围;也就是说,如果你要对S中的元素进行排序,那么任何元素j和j + 1之间的差异都是0或1.例如A = {5,4,4,8,8}给出了一个子集{4,4,5}和{8,8};这些子集的m值分别为3和2。

1 个答案:

答案 0 :(得分:1)

关键声明是:

  

任何元素j和j + 1之间的差异是0或1

所以,对于

  

A = {5,4,4,8,8}

A被排序,当你遍历元素时,如果当前元素和下一个元素(j和j + 1)在彼此的0或1之间,它们属于子集。

因此,当你遍历时:

A[0]=5 and A[1] = 4 : difference 1 - add to subset {5,4}
A[1]=4 and A[2]= 4 : difference 0 - add to subset {5,4,4}

A[2]=4 and A[3] = 8: difference is 4 - Start new subset {8}
A[3] = 8 and A[4] = 8] : difference is 0 - Add to subset {8,8}