Сортировка вектора/массива C++

Написал код, который раскладывает на слагаемые число, их нужно в порядке НЕУБЫВАНИЯ расположить. вот код:

#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#define N 5
using namespace std;
 
bool comp(int a, int b)
{
    return (a < b);
}
vector<int> x(40);
void Partitions(int pos, int max, int number )
{
    int i;
    if (!number)
    {
        int m = x.size();
 
        // Number of columns assuming it’s a square matrix
        for (i = 0; i < pos; i++) {
            //sort(x.begin(), x.begin() + pos);
            //sort(x.begin() + i, x.begin());
            cout << x[i] << " ";
        }
        cout << endl;   
 
        //nth_element(x, x + 4, x + 7, comp);
 
    }
    else
        for (i = min(number,max); i >= 1 ; i--)
        {
            x[pos] = i;
            Partitions(pos + 1, i, number - i);  
        }
}
 
int main()
{   
    int n;
    cin >> n;
    Partitions(0, n, n);
    return 0;
}

У меня выводится: введите сюда описание изображения

Нужно, чтобы выводилось вот так: введите сюда описание изображения

Прошу, помогите пожалуйста


Ответы (1 шт):

Автор решения: MBo

Порядок, конечно, неестественный требуется...

Сделайте генерацию в лексикографическом порядке

for (i = min; i <= number ; i++)

[1, 1, 1, 1, 1]
[1, 1, 1, 2]
[1, 1, 3]
[1, 2, 2]
[1, 4]
[2, 3]
[5]

но выходные строки складывайте в стек, а в конце выберите из стека. Или в вектор, а в конце в обратном порядке обойдите его.

→ Ссылка