94 lines
2.7 KiB
Java
94 lines
2.7 KiB
Java
|
/*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.*/
|
|||
|
|
|||
|
//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();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
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 }
|