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 Queue
Java Program to Implement Randomized Binary Search Tree
Finding Max/Min of a List or Collection
Removing all Nulls from a List in Java
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Lớp Arrarys trong Java (Arrays Utility Class)
Java Program to Implement Bloom Filter
Java Program to Create a Random Graph Using Random Edge Generation
Why String is Immutable in Java?
Convert a Map to an Array, List or Set in Java
The Spring @Controller and @RestController Annotations
Java Program to Find ith Largest Number from a Given List Using Order-Statistic Algorithm
Spring 5 and Servlet 4 – The PushBuilder
Registration with Spring Security – Password Encoding
CyclicBarrier in Java
Java – InputStream to Reader
Wiring in Spring: @Autowired, @Resource and @Inject
Java Program to Construct an Expression Tree for an Infix Expression
Java Program to Implement Direct Addressing Tables
Java Program to Implement Binomial Tree
Java Program to Check for balanced parenthesis by using Stacks
Java Program to Perform Naive String Matching
Toán tử trong java
Guide to Apache Commons CircularFifoQueue
Java Program to Implement Karatsuba Multiplication Algorithm
Java toString() Method
Command-Line Arguments in Java
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Hướng dẫn sử dụng Java Generics
Java Program to Represent Graph Using Linked List
Java Program to Implement Quick Sort with Given Complexity Constraint
How to Iterate Over a Stream With Indices