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 Scanner hasNext() vs. hasNextLine()
Java Program to Solve the 0-1 Knapsack Problem
Checked and Unchecked Exceptions in Java
Daemon Threads in Java
Constructor Injection in Spring with Lombok
How to Manually Authenticate User with Spring Security
An Example of Load Balancing with Zuul and Eureka
Tips for dealing with HTTP-related problems
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Java Program to Create a Random Linear Extension for a DAG
Sử dụng JDBC API thực thi câu lệnh truy vấn dữ liệu
A Guide to TreeMap in Java
Java Program to Implement Gabow Algorithm
Java Program to Implement Solovay Strassen Primality Test Algorithm
Java Program to Implement a Binary Search Tree using Linked Lists
Java Program to Implement Circular Singly Linked List
Java Program to Implement the Hill Cypher
Java Program to Perform Matrix Multiplication
Remove HTML tags from a file to extract only the TEXT
Apache Commons Collections BidiMap
String Processing with Apache Commons Lang 3
Configuring a DataSource Programmatically in Spring Boot
Mapping a Dynamic JSON Object with Jackson
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
A Guide to Java HashMap
Spring RequestMapping
Java Program to Implement Sieve Of Eratosthenes
Introduction to Liquibase Rollback
Spring WebClient Filters
New Features in Java 14
The Guide to RestTemplate
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java