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 Implement Interval Tree
Java Program to Find a Good Feedback Vertex Set
Introduction to Thread Pools in Java
Spring Boot - Database Handling
Java Program to Implement Depth-limited Search
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
Consuming RESTful Web Services
Request a Delivery / Read Receipt in Javamail
The XOR Operator in Java
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Java Program to Check the Connectivity of Graph Using BFS
Queue và PriorityQueue trong Java
Java Program to Perform Partial Key Search in a K-D Tree
Hướng dẫn Java Design Pattern – Proxy
Reading an HTTP Response Body as a String in Java
Hướng dẫn sử dụng String Format trong Java
“Stream has already been operated upon or closed” Exception in Java
Biểu thức Lambda trong Java 8 – Lambda Expressions
Java Program to Implement Sorted Doubly Linked List
Hướng dẫn Java Design Pattern – Visitor
Spring Boot - Building RESTful Web Services
Guide to Guava Multimap
Java Program to Implement the Hill Cypher
Spring MVC Content Negotiation
Java Program to Create the Prufer Code for a Tree
Java InputStream to Byte Array and ByteBuffer
Java Program to Check Cycle in a Graph using Graph traversal
Apache Commons Collections OrderedMap
Java Program to Check Cycle in a Graph using Topological Sort
A Guide to EnumMap
Java Program to Implement Hash Tree
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...