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:
Queue và PriorityQueue trong Java
Java Program to Implement LinkedHashSet API
Một số nguyên tắc, định luật trong lập trình
The Thread.join() Method in Java
Spring Boot - Securing Web Applications
Static Content in Spring WebFlux
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
The Registration API becomes RESTful
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Generate Random Numbers Using Multiply with Carry Method
Number Formatting in Java
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Java Program to Find Hamiltonian Cycle in an UnWeighted Graph
The Spring @Controller and @RestController Annotations
Spring Boot - CORS Support
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Registration with Spring Security – Password Encoding
Guava Collections Cookbook
Configure a Spring Boot Web Application
Jackson Ignore Properties on Marshalling
Java Concurrency Interview Questions and Answers
Java Program to Generate Random Hexadecimal Byte
Java Program to Implement Quick Sort with Given Complexity Constraint
Apache Commons Collections OrderedMap
Guide to Java 8’s Collectors
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Introduction to the Java NIO2 File API
Java Program to Represent Graph Using Adjacency List
HttpClient Connection Management
Java Program to Implement Max-Flow Min-Cut Theorem
Java Program to Implement Floyd Cycle Algorithm
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java