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 <stdio.h>

void generatesum(int n, int maxPart, int current[], int length) {
    if (n == 0) {
        // print one valid partition
        for (int i = 0; i < length; i++) {
            printf("%d", current[i]);
            if (i + 1 < length) printf("+");
        }
        printf("\n");
        return;
    }

    for (int part = (n < maxPart ? n : maxPart); part >= 1; part--) {
        current[length] = part;               
        generatesum(n - part, part, current, length + 1);
    }
}

int main(void) {
    int n = 5;
    int current[64];   // enough space for recursion

    generatesum(n, 4, current, 0);
    
    return 0;
}



/*
run:

4+1
3+2
3+1+1
2+2+1
2+1+1+1
1+1+1+1+1

*/

 



answered Dec 24, 2025 by avibootz
...