This is a java program to generate and print all the subsets using the Gray Code Order. The reflected binary code, also known as Gray code after Frank Gray, is a binary numeral system where two successive values differ in only one bit (binary digit). The gray code equivalent of a binary number is (number >> 1) ^ number, i.e. right-shift the number by one and EX-ORing with the original number.
Here is the source code of the Java Program to Generate All Subsets of a Given Set in the Gray Code Order. 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 gray code order import java.util.Random; import java.util.Scanner; public class Gray_Code_Permutation { public static int[] grayCode(int N) { int[] grayCode = new int[(int) Math.pow(2, N)]; int[] binary = new int[(int) Math.pow(2, N)]; for (int i = 0; i < Math.pow(2, N); i++) grayCode[i] = (i >> 1) ^ i; for (int i = 0; i < Math.pow(2, N); i++) { int b = 1; binary[i] = 0; while (grayCode[i] > 0) { binary[i] += (grayCode[i] % 2) * b; grayCode[i] /= 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 = grayCode(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 Gray_Code_Permutation.java $ java Gray_Code_Permutation Enter the number of elements in the set: 4 The elements in the set : 36 75 15 59 The permutations are: { } { 36 } { 36 75 } { 75 } { 75 15 } { 36 75 15 } { 36 15 } { 15 } { 15 59 } { 36 15 59 } { 36 75 15 59 } { 75 15 59 } { 75 59 } { 36 75 59 } { 36 59 } { 59 } Enter the number of elements in the set: 3 The elements in the set : 73 36 36 The permutations are: { } { 73 } { 73 36 } { 36 } { 36 36 } { 73 36 36 } { 73 36 } { 36 }
Related posts:
Introduction to Java Serialization
Lập trình đa luồng với CompletableFuture trong Java 8
Lớp LinkedHashMap trong Java
Java Program to Implement Shunting Yard Algorithm
Java Program to Implement a Binary Search Algorithm for a Specific Search Sequence
Spring Data MongoDB – Indexes, Annotations and Converters
Quick Guide to @RestClientTest in Spring Boot
Java Program to Perform Searching Based on Locality of Reference
Java Program to Implement Insertion Sort
Java Program to Create a Random Linear Extension for a DAG
Java Program to Implement Ternary Search Algorithm
HttpClient 4 – Follow Redirects for POST
Object Type Casting in Java
A Quick Guide to Spring MVC Matrix Variables
Exploring the Spring Boot TestRestTemplate
REST Web service: Upload và Download file với Jersey 2.x
The HttpMediaTypeNotAcceptableException in Spring MVC
Guide to CopyOnWriteArrayList
Spring Boot - Build Systems
Java Program to Implement Borwein Algorithm
Reactive WebSockets with Spring 5
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Java – File to Reader
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Entity To DTO Conversion for a Spring REST API
Giới thiệu Json Web Token (JWT)
Checked and Unchecked Exceptions in Java
Converting a Stack Trace to a String in Java
Constructor Dependency Injection in Spring
Java Program to Implement LinkedBlockingDeque API
Tìm hiểu về Web Service