Jun 7, 2017

print all combinations of numbers for a given sum and given count of numbers


void printArray(int b[], int size)
{
    for(int i=0;i<size;i++)
  cout << b[i] << "+";
  
  cout << endl;
}
void printCombinations(int sum, int n, int a[], int level)
{
    if(n==1)
    {
        a[level] = sum;
        printArray(a, level+1);
        return;
    }
    
    for(int i=0; i<=sum; i++)
    {
        a[level] = i;
        printCombinations(sum-i, n-1, a, level+1);
    }
}

int main()
{
    int sum;
    int n;
    int a[50];
    cin >> sum;
    cin >> n;
    printCombinations(sum, n, a, 0);
 return 0;
}

input: sum=4, count=3
output:
0+0+4+
0+1+3+
0+2+2+
0+3+1+
0+4+0+
1+0+3+
1+1+2+
1+2+1+
1+3+0+
2+0+2+
2+1+1+
2+2+0+
3+0+1+
3+1+0+
4+0+0+

No comments: