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:

How to Count Duplicate Elements in Arraylist
Java Program to Implement ConcurrentSkipListMap API
Lập trình hướng đối tượng (OOPs) trong java
Converting between an Array and a List in Java
Java Program to Perform Searching Using Self-Organizing Lists
Java Program to Implement Bresenham Line Algorithm
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Java Multi-line String
Apache Tiles Integration with Spring MVC
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Java Program to Represent Graph Using Linked List
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Spring MVC Content Negotiation
Java Program to Implement Efficient O(log n) Fibonacci generator
Hướng dẫn sử dụng Java Reflection
Instance Profile Credentials using Spring Cloud
Introduction to Spliterator in Java
Spring Boot Configuration with Jasypt
Java Program to Implement Cartesian Tree
Hướng dẫn Java Design Pattern – Singleton
RegEx for matching Date Pattern in Java
Pagination and Sorting using Spring Data JPA
Request a Delivery / Read Receipt in Javamail
Send an email with an attachment
Java Program to Create a Random Graph Using Random Edge Generation
Java NIO2 Path API
Java Program to Implement the Program Used in grep/egrep/fgrep
Giới thiệu Json Web Token (JWT)
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
Java Program to Implement Hash Tables Chaining with List Heads
New Features in Java 13
Java Program to Find Nearest Neighbor for Dynamic Data Set