package com.interview.number;
import java.util.ArrayList;
import java.util.List;
/**
* http://www.geeksforgeeks.org/generate-unique-partitions-of-an-integer/
* Test cases:
* 0 or negative number
*/
public class UniquePartitionOfInteger {
public void partition(int n){
List<Integer> result = new ArrayList<Integer>();
partition(n,n,result);
}
private void partition(int n, int max,List<Integer> result){
if(n < 0){
return ;
}
if(n == 0){
result.forEach(i -> System.out.print(i + " "));
System.out.println();
return;
}
for(int i=Math.min(n, max); i > 0 && i <= max; i--){
result.add(i);
partition(n-i,i, result);
result.remove(result.size()-1);
}
}
public static void main(String args[]){
UniquePartitionOfInteger upi = new UniquePartitionOfInteger();
upi.partition(12);
}
}