This is a java program to generate and print all possible subsets using the method of Binary Counting method. The generations of subsets are done using binary numbers. Let there be 3 elements in the set, we generate binary equivalent of 2^3 = 8 numbers(0-7), where each bit in a number represents the presence/absence of element in the subset. The element is present if bit is 1, absent otherwise. 010 – only second element is present in the subset.
Here is the source code of the Java Program to Implement the Binary Counting Method to Generate Subsets of a Set. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a java program to generate all subsets of given set of numbers using binary counting method import java.util.Random; import java.util.Scanner; public class Binary_Counting_Subsets { public static int[] binary(int N) { int[] binary = new int[(int) Math.pow(2, N)]; for (int i = 0; i < Math.pow(2, N); i++) { int b = 1; binary[i] = 0; int num = i; while (num > 0) { binary[i] += (num % 2) * b; num /= 2; b = b * 10; } } return binary; } public static void main(String args[]) { Random random = new Random(); Scanner sc = new Scanner(System.in); System.out.println("Enter the number of elements in the set: "); int N = sc.nextInt(); int[] sequence = new int[N]; for (int i = 0; i < N; i++) sequence[i] = Math.abs(random.nextInt(100)); System.out.println("The elements in the set : "); for (int i = 0; i < N; i++) System.out.print(sequence[i] + " "); int[] mask = new int[(int) Math.pow(2, N)]; mask = binary(N); System.out.println("\nThe permutations are: "); for (int i = 0; i < Math.pow(2, N); i++) { System.out.print("{"); for (int j = 0; j < N; j++) { if (mask[i] % 10 == 1) System.out.print(sequence[j] + " "); mask[i] /= 10; } System.out.println("}"); } sc.close(); } }
Output:
$ javac Binary_Counting_Subsets.java $ java Binary_Counting_Subsets Enter the number of elements in the set: 5 The elements in the set : 78 35 5 10 15 The permutations are: { } { 78 } { 35 } { 78 35 } { 5 } { 78 5 } { 35 5 } { 78 35 5 } { 10 } { 78 10 } { 35 10 } { 78 35 10 } { 5 10 } { 78 5 10 } { 35 5 10 } { 78 35 5 10 } { 15 } { 78 15 } { 35 15 } { 78 35 15 } { 5 15 } { 78 5 15 } { 35 5 15 } { 78 35 5 15 } { 10 15 } { 78 10 15 } { 35 10 15 } { 78 35 10 15 } { 5 10 15 } { 78 5 10 15 } { 35 5 10 15 } { 78 35 5 10 15 }
Related posts:
Java Program to Implement RoleUnresolvedList API
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Hướng dẫn Java Design Pattern – Transfer Object
Spring REST with a Zuul Proxy
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Hướng dẫn Java Design Pattern – Mediator
Static Content in Spring WebFlux
Guide to the Java TransferQueue
Java Program to Implement an Algorithm to Find the Global min Cut in a Graph
Java Program to Implement Red Black Tree
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Java Program to Implement PriorityBlockingQueue API
Java 14 Record Keyword
Converting a Stack Trace to a String in Java
Java Program to Implement Gauss Seidel Method
A Guide to TreeSet in Java
Spring @RequestMapping New Shortcut Annotations
Setting the Java Version in Maven
Test a REST API with Java
Java Program to Implement Self organizing List
Serialization và Deserialization trong java
Java Program to Implement Quick Sort with Given Complexity Constraint
Guide to the Synchronized Keyword in Java
Spring REST API + OAuth2 + Angular
Sending Emails with Java
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Introduction to Spliterator in Java
Updating your Password
Guide to the Java Queue Interface
Converting Between a List and a Set in Java
How to Get the Last Element of a Stream in Java?
Spring RestTemplate Error Handling