Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself

This is a java program to find the number of ways to write a given number as sum of numbers less than the number itself. We start with the number, number minus one is the next partition and so on, till all one’s are the last partition where we stop.

Here is the source code of the Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself. 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 find the number of ways to write a number as a sum of smaller than the number itself
import java.util.Scanner;
 
public class NumberOf_Unique_Partitions 
{
    public static void print(int[] p, int n, int count) 
    {
        for (int i = 0; i < n; i++)
            System.out.print(p[i] + " ");
        System.out.println();
        int j;
        for (j = 0; j < n; j++) 
        {
            if (p[j] == 1)
                continue;
            else
                break;
        }
        if (j == n)
            System.out
                    .println("The number of ways to write a number as a sum of number smaller than itself is :"
                            + (count - 1));
    }
 
    public static void generateUniquePartition(int n) 
    {
        int[] p = new int[n];
        int k = 0, count = 0;
        p[k] = n;
        while (true) 
        {
            count++;
            print(p, k + 1, count);
            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();
    }
}

Output:

$ javac NumberOf_Unique_Partitions.java
$ java NumberOf_Unique_Partitions
 
Unique Partitioning of a given number
Enter the number:
6
6 
5 1 
4 2 
4 1 1 
3 3 
3 2 1 
3 1 1 1 
2 2 2 
2 2 1 1 
2 1 1 1 1 
1 1 1 1 1 1 
The number of ways to write as a sum of number smaller than itself is :10

Related posts:

Java Program to Convert a Decimal Number to Binary Number using Stacks
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Java Program to Implement Euclid GCD Algorithm
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
Java Program to Implement Bubble Sort
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Java Program to Generate Random Hexadecimal Byte
Lập trình đa luồng với CompletableFuture trong Java 8
Java Program to Implement Patricia Trie
Java Program to Check Cycle in a Graph using Topological Sort
Remove HTML tags from a file to extract only the TEXT
Java Program to Find the Nearest Neighbor Using K-D Tree Search
Hướng dẫn kết nối cơ sở dữ liệu với Java JDBC
Most commonly used String methods in Java
HandlerAdapters in Spring MVC
Java Program to Perform Cryptography Using Transposition Technique
MyBatis with Spring
Java Program to Implement Shoelace Algorithm
Kết hợp Java Reflection và Java Annotations
Generic Constructors in Java
Converting String to Stream of chars
Java Program to Implement Find all Forward Edges in a Graph
Java Program to Implement Radix Sort
Spring Security Remember Me
An Example of Load Balancing with Zuul and Eureka
A Guide to the Java ExecutorService
Introduction to Netflix Archaius with Spring Cloud
A Guide to Java 9 Modularity
Java toString() Method
Java Program to Perform Insertion in a 2 Dimension K-D Tree
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers