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:

Life Cycle of a Thread in Java
Spring Security Logout
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
How to Convert List to Map in Java
Java Program to Implement Fisher-Yates Algorithm for Array Shuffling
Debug a HttpURLConnection problem
Assertions in JUnit 4 and JUnit 5
Giới thiệu Swagger – Công cụ document cho RESTfull APIs
Java Program to Implement Gauss Jordan Elimination
Changing Annotation Parameters At Runtime
Java Program to Implement Dijkstra’s Algorithm using Queue
A Guide to JUnit 5
Java Program to Create the Prufer Code for a Tree
Spring Boot - Tomcat Deployment
Java Program to Implement Sparse Array
Assert an Exception is Thrown in JUnit 4 and 5
Java Program to implement Array Deque
Intro to the Jackson ObjectMapper
Java Program to Solve Tower of Hanoi Problem using Stacks
The Guide to RestTemplate
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Implement Rolling Hash
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Jackson – JsonMappingException (No serializer found for class)
Fixing 401s with CORS Preflights and Spring Security
Unsatisfied Dependency in Spring
So sánh ArrayList và Vector trong Java
Java Program to Implement Adjacency Matrix
Guide to Java Instrumentation