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:
Spring Boot - Eureka Server
New Features in Java 14
Java Program to Find a Good Feedback Edge Set in a Graph
More Jackson Annotations
Java Program to Perform Searching Using Self-Organizing Lists
An Intro to Spring Cloud Security
A Guide to WatchService in Java NIO2
A Guide to JUnit 5 Extensions
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Java Program to Implement Merge Sort Algorithm on Linked List
Creating a Custom Starter with Spring Boot
Tính kế thừa (Inheritance) trong java
Java Program to Implement Hash Tables
Reactive WebSockets with Spring 5
OAuth2.0 and Dynamic Client Registration
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
Transactions with Spring and JPA
Java toString() Method
Java Program to Implement Interpolation Search Algorithm
Java Program to Create a Minimal Set of All Edges Whose Addition will Convert it to a Strongly Conne...
Compact Strings in Java 9
Java 8 Stream API Analogies in Kotlin
Guide to the Java TransferQueue
Java Program to Implement Fenwick Tree
New in Spring Security OAuth2 – Verify Claims
Apache Commons Collections OrderedMap
Giới thiệu java.io.tmpdir
Spring Security Authentication Provider
Java Program to Implement WeakHashMap API
Spring Boot Configuration with Jasypt
Spring Boot - File Handling
Java Program to Solve the 0-1 Knapsack Problem