This is a java program to generate and print all the subsets of a given set as per lexicographical order, here we follow the numerical sequence. First generate all the subsets having only one element, then generate all the subsets having two elements and so on.
Here is the source code of the Java Program to Generate All Subsets of a Given Set in the Lexico-Graphic 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 permutation of n elements in lexicographic order
import java.util.Random;
import java.util.Scanner;
public class Lexicographic_Permutation
{
public static int[] lexicographicOrder(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] + " ");
for (int i = 1; i < N; i++)
{
int j = i;
int temp = sequence[i];
while (j > 0 && temp < sequence[j - 1])
{
sequence[j] = sequence[j - 1];
j = j - 1;
}
sequence[j] = temp;
}
int[] mask = new int[(int) Math.pow(2, N)];
mask = lexicographicOrder(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 Lexicographic_Permutation.java
$ java Lexicographic_Permutation
Enter the number of elements in the set:
5
The elements in the set :
19 3 37 7 22
The permutations are:
{ }
{ 3 }
{ 7 }
{ 19 }
{ 22 }
{ 37 }
{ 3 7 }
{ 3 19 }
{ 7 19 }
{ 3 22 }
{ 7 22 }
{ 19 22 }
{ 3 37 }
{ 7 37 }
{ 19 37 }
{ 22 37 }
{ 3 7 19 }
{ 3 7 22 }
{ 3 19 22 }
{ 7 19 22 }
{ 3 7 37 }
{ 3 19 37 }
{ 7 19 37 }
{ 3 22 37 }
{ 7 22 37 }
{ 19 22 37 }
{ 3 7 22 37 }
{ 3 19 22 37 }
{ 7 19 22 37 }
{ 3 7 19 37 }
{ 3 7 19 22 }
{ 3 7 19 22 37 }
Related posts:
Immutable ArrayList in Java
String Joiner trong Java 8
Java Program to Delete a Particular Node in a Tree Without Using Recursion
Java – Write a Reader to File
How to Break from Java Stream forEach
Autoboxing và Unboxing trong Java
Comparing Objects in Java
DistinctBy in the Java Stream API
Circular Dependencies in Spring
Java Program to Implement CopyOnWriteArrayList API
Different Ways to Capture Java Heap Dumps
Java Program to Implement Double Ended Queue
Apache Commons Collections SetUtils
Functional Interfaces in Java 8
Java Program to Implement Doubly Linked List
Find the Registered Spring Security Filters
Using the Map.Entry Java Class
Java Program to Search for an Element in a Binary Search Tree
Convert Time to Milliseconds in Java
The Guide to RestTemplate
Removing Elements from Java Collections
MyBatis with Spring
Phân biệt JVM, JRE, JDK
Java Program to find the peak element of an array using Binary Search approach
Java Program to Find Path Between Two Nodes in a Graph
Guide to Java Instrumentation
Wiring in Spring: @Autowired, @Resource and @Inject
Java Program to Represent Graph Using Incidence List
The HttpMediaTypeNotAcceptableException in Spring MVC
Transactions with Spring and JPA
Truyền giá trị và tham chiếu trong java
Java Program to Implement the Vigenere Cypher