PTA特色题目 语言 stl语法 乱七八糟

PTA 7-37 整数分解为若干项之和

2019-03-17  本文已影响0人  smatrcHendsa

DFS
https://pintia.cn/problem-sets/14/problems/2990

#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string.h>

using namespace std;
int N;
int arr[31];
int timecntt = 0;

void output(int cnt) {
    timecntt++;
    if (timecntt != 1) {
        printf(";");
    }
    
    printf("%d=", N);
    
    for(int i = 0; i < cnt - 1; i++)
        printf("%d+", arr[i]);
    printf("%d", arr[cnt - 1]);
    
    if (timecntt == 4) {
        printf("\n");
        timecntt = 0;
    }
        
}

void re(int bign, int num, int cnt) {
    if (num == 0)
        output(cnt);
    
    for(int i = 1; i <= N; i++) {
        if (i >= bign && num - i >= 0) {
            arr[cnt] = i;
            re(max(bign, i), num - i, cnt + 1);//recursion
        }
    }
}

int main() {
    scanf("%d", &N);
    re(0, N, 0);
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读