62 lines
1.6 KiB
Java
62 lines
1.6 KiB
Java
|
/*
|
||
|
This is a java program to perform partition of an integer in all possible ways. Every partition when added should result in the given integer.
|
||
|
*/
|
||
|
//This is sample program to print a unique partitions of a given number
|
||
|
import java.util.Scanner;
|
||
|
|
||
|
public class Unique_Partitions_Number
|
||
|
{
|
||
|
public static void print(int[]p, int n)
|
||
|
{
|
||
|
for(int i=0; i<n; i++)
|
||
|
System.out.print(p[i]+" ");
|
||
|
System.out.println();
|
||
|
}
|
||
|
public static void generateUniquePartition(int n)
|
||
|
{
|
||
|
int []p = new int[n+n];
|
||
|
int k = 0;
|
||
|
p[k] = n;
|
||
|
while(true)
|
||
|
{
|
||
|
print(p, k=1);
|
||
|
int rem_value = 0;
|
||
|
while(k >= 0 && p[k] == 1)
|
||
|
{
|
||
|
rem_value += p[k];
|
||
|
k--;
|
||
|
}
|
||
|
if(k < 0)
|
||
|
return;
|
||
|
p[k]--;
|
||
|
rem_value++;
|
||
|
while(rem_value > p[k])
|
||
|
{
|
||
|
p[k+1] = p[k];
|
||
|
rem_value -= p[k];
|
||
|
k++;
|
||
|
}
|
||
|
p[k+1] = rem_value;
|
||
|
k++;
|
||
|
}
|
||
|
}
|
||
|
public static void main(String args[])
|
||
|
{
|
||
|
System.out.println("Unique Partitioning of a given number");
|
||
|
System.out.println("Enter the number:");
|
||
|
Scanner sc = new Scanner(System.in);
|
||
|
int n = sc.nextInt();
|
||
|
generateUniquePartition(n);
|
||
|
sc.close();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Enter the number:
|
||
|
4
|
||
|
|
||
|
4
|
||
|
3 1
|
||
|
2 2
|
||
|
2 1 1
|
||
|
1 1 1 1
|