How to find all the distinct ways to write 5 as a sum of the numbers 1–4 in C++

1 Answer

0 votes
#include <iostream>
#include <vector>

void generatesum(int n, int maxPart, std::vector<int>& current) {
    if (n == 0) {
        // print one valid partition
        for (size_t i = 0; i < current.size(); i++) {
            std::cout << current[i];
            if (i + 1 < current.size()) std::cout << "+";
        }
        std::cout << "\n";
        return;
    }

    for (int part = std::min(n, maxPart); part >= 1; part--) {
        current.push_back(part);
        generatesum(n - part, part, current);
        current.pop_back();
    }
}

int main() {
    int n = 5;
    std::vector<int> current;

    generatesum(n, 4, current); 
}


 
   
/*
run:
   
4+1
3+2
3+1+1
2+2+1
2+1+1+1
1+1+1+1+1

*/

 



answered Dec 23, 2025 by avibootz
...