Added subset generation method and JavaDocs.
This commit is contained in:
parent
75fd07d3e9
commit
6cfc94869b
@ -58,6 +58,36 @@ Algorithm Design Block
|
||||
*/
|
||||
package Assignments.A2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Partition {
|
||||
|
||||
private int[] set;
|
||||
private List<List<Integer>> subsets;
|
||||
|
||||
/**
|
||||
* Generates the list of subsets using Bit Shift Counting by iterating over all combinations of 1 to n.
|
||||
* After shifting the counter, the current subset is created initialized and if 1 shifted by j is logically
|
||||
* ANDed with the i is not 0, it adds the value j represents to the subset.
|
||||
*
|
||||
* @precondition none
|
||||
* @postcondition the subsets are generated and added to the field.
|
||||
*/
|
||||
public void generateSubsets() {
|
||||
List<List<Integer>> subsets = new ArrayList<>();
|
||||
int n = this.set.length;
|
||||
|
||||
for (int i = 0; i < (1 << n); i++) {
|
||||
List<Integer> currentSubset = new ArrayList<>();
|
||||
for (int j = 0; j < n; j++) {
|
||||
if ((i & (1 << j)) != 0) {
|
||||
currentSubset.add(this.set[j]);
|
||||
}
|
||||
}
|
||||
subsets.add(currentSubset);
|
||||
}
|
||||
this.subsets = subsets;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user