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 Double Ended Queue
Java Program to Check if a Given Set of Three Points Lie on a Single Line or Not
Disable Spring Data Auto Configuration
Spring Cloud AWS – Messaging Support
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Các kiểu dữ liệu trong java
Spring Boot - Rest Template
Java Program to Perform LU Decomposition of any Matrix
Spring Boot - Flyway Database
Java Program to Perform integer Partition for a Specific Case
Introduction to Spring Data JPA
The Registration API becomes RESTful
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Hướng dẫn Java Design Pattern – Transfer Object
Java Program to Check whether Directed Graph is Connected using DFS
Create a Custom Auto-Configuration with Spring Boot
Convert String to int or Integer in Java
Một số tính năng mới về xử lý ngoại lệ trong Java 7
Java Streams vs Vavr Streams
Java Program to Implement Graph Coloring Algorithm
Java Program to Generate Random Numbers Using Multiply with Carry Method
A Guide to the ViewResolver in Spring MVC
Java Program to Perform String Matching Using String Library
Spring Boot Application as a Service
Exploring the Spring Boot TestRestTemplate
Transaction Propagation and Isolation in Spring @Transactional
Java Program to Implement Find all Forward Edges in a Graph
Java Program to Implement Dijkstra’s Algorithm using Priority Queue
Java Program to Implement Segment Tree
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Java Program to Implement the Program Used in grep/egrep/fgrep
Guide to the Synchronized Keyword in Java