Решение задачи Разложение на слагаемые с Меньшиков

Без пояснения   Просмотров: 233


Вывести все представления натурального числа N суммой натуральных чисел. Перестановка слагаемых нового способа представления не даёт.

Код

#include <iostream>
#include <vector>
 
using namespace std;
 
int n;
vector<int> items;
void output()
{
    if (items.size() == 1)
        return;
    printf("%d",items[0]);
    for (int i=1;i<items.size();i++)
        printf("+%d",items[i]);
    printf("\n");
}
// prev - предыдущее слагаемое
// sum - сумму, которую осталось набрать
void rec(int prev, int sum)
{
    if (sum == 0)
        output();
    for (int i=prev;i<=sum;i++)
    {
        items.push_back(i);
        rec(i,sum-i);
        items.pop_back();
    }
}
int main()
{
    cin>>n;
    rec(1,n);
    return 0;
}
 

         

Администратор Photo Автор: Администратор




Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться