Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define maxn 100
- int N, cnt = 0;
- int sum[maxn];
- int a[maxn];
- void output (int n) {
- for (int i = 1; i <= n; ++i) {
- printf("%d", a[i]);
- if (i < n) {
- printf(" + ");
- }
- }
- printf("\n");
- ++cnt;
- }
- bool check (int i, int v) {
- return true;
- }
- void Attempt (int k, int v0) {
- for (int v = v0; v <= N-sum[k-1]; ++v) {
- if (check(k, v)) {
- a[k] = v;
- sum[k] = sum[k-1] + a[k];
- if (sum[k] == N) {
- output(k);
- } else {
- Attempt(k+1, v);
- }
- a[k] = 0;
- sum[k] = 0;
- }
- }
- }
- int main () {
- scanf("%d", &N);
- Attempt(1, 1);
- printf("\nCount: %d\n", cnt);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement