int N, M; void output(int a[]) { for (int i = M; i >=1; i--) { if (1 == a[i]) cout << i << " "; } cout << endl; } void backpack(int a[], int n, int m) { if (n < 1 || m < 1 || (m == 1 && n != 1)) { return; } if (m == n) { a[m] = 1; output(a); a[m] = 0; } backpack(a, n, m-1); a[m] = 1; backpack(a, n - m, m - 1); a[m] = 0; }