Сортировка вектора/массива 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]
но выходные строки складывайте в стек, а в конце выберите из стека. Или в вектор, а в конце в обратном порядке обойдите его.
