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:

Spring Cloud Bus
Tránh lỗi NullPointerException trong Java như thế nào?
Spring Autowiring of Generic Types
A Guide to @RepeatedTest in Junit 5
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Java Program to Implement Dijkstra’s Algorithm using Set
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
A Guide to WatchService in Java NIO2
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Object Type Casting in Java
Spring Boot Change Context Path
Hướng dẫn Java Design Pattern – Adapter
Reactive WebSockets with Spring 5
Java Program to Implement RoleList API
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
Guide to Spring Cloud Kubernetes
Hướng dẫn sử dụng Java Annotation
A Guide to Java 9 Modularity
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...
Tiêu chuẩn coding trong Java (Coding Standards)
Java Program to Find Nearest Neighbor for Static Data Set
Dynamic Proxies in Java
Java Program to Implement Variable length array
Java 8 Stream API Analogies in Kotlin
Show Hibernate/JPA SQL Statements from Spring Boot
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Hướng dẫn Java Design Pattern – Composite
Converting a List to String in Java
Semaphore trong Java
Java Program to Implement PriorityQueue API
How to Delay Code Execution in Java
Java Program to Perform String Matching Using String Library