Wednesday 22 November 2017

C++ Program to Perform Integer Partition for a Specific Case


Code:

#include    iostream

using namespace std;

// A function to print the generated partition.
void printArray(int p[], int n)
{
cout<<"\t";
for (int i = 0; i < n; i++)
cout<
    cout<<"\n";
}

// A function to print all the possible partition.
void PrintAllUniqueParts(int n)
{
    int p[n], k = 0;
    p[k] = n;
    // Loop until all the array elements converted to 1 mean no further partition can be generated.
    while(1)
    {
        printArray(p, k + 1);
        int rem_val = 0;

        // Move the pointer to the index so that p[k] > 1.
        while (k >= 0 && p[k] == 1)
        {
            rem_val += p[k];
k--;
        }
        // If k < 0 then the all the element are broken down to 1.
        if (k < 0)  
            return;

        // If value greater than 1 is found then decrease it by 1 and increase rem_val to add it to other elements.
        p[k]--;
        rem_val++;

        // Loop until the number of 1's are greater than the value at k index.
        while (rem_val > p[k])
        {
            p[k+1] = p[k];
            // Decrease the rem_val value.
            rem_val = rem_val - p[k];
            k++;
        }

        // Assign the remaining value to the index next to k.
        p[k+1] = rem_val;
        k++;
    }
}

int main()
{
    int n;
    cout<<"Enter natural numbers for creating partitions: ";
cin>>n;
if (value <= 0)
{
cout<<"Wrong input!!";
break;
}
cout<<"All Unique Partitions of "<
PrintAllUniqueParts(n);

    return 0;
}


Output:

Case 1:
Enter natural numbers for creating partitions: 5
All Unique Partitions of 5 are:-
        5
        4 1
        3 2
        3 1 1
        2 2 1
        2 1 1 1
        1 1 1 1 1

Case 2:
Enter natural numbers for creating partitions: 8
All Unique Partitions of 8 are:-
        8
        7 1
        6 2
        6 1 1
        5 3
        5 2 1
        5 1 1 1
        4 4
        4 3 1
        4 2 2
        4 2 1 1
        4 1 1 1 1
        3 3 2
        3 3 1 1
        3 2 2 1
        3 2 1 1 1
        3 1 1 1 1 1
        2 2 2 2
        2 2 2 1 1
        2 2 1 1 1 1
        2 1 1 1 1 1 1
        1 1 1 1 1 1 1 1




More C++ Programs:













100+ Best Home Decoration Ideas For Christmas Day 2019 To Make Home Beautiful

Best gifts for Christmas Day | Greeting cards for Christmas Day | Gift your children a new gift on Christmas day This Christmas d...