在c中给定一个固定数字的情况下找到所有可能的加法和组合(给定一个和,找到它的可能的加法和置换。)

时间:2018-09-05 02:44:23

标签: c++

我正在寻找数字的所有可能组合以及它们在固定大小的数组中的排列。例如,我的期望输出总数为5

5 0 0 0

0 5 0 0

0 0 5 0

0 0 0 5

4 1 0 0

1 4 0 0

1 0 4 0

1 0 0 4

0 1 4 0

以此类推...这可能吗?

1 个答案:

答案 0 :(得分:0)

使用递归:

void find(int remain, int depth, vector<int> v) {
    if (depth == 4) {
        if (remain == 0){
            for (int i = 0 ;i < 4; i++) {
                cout << v[i];
            }
            cout<<endl;
        }
        return;
    }
    for (int i = 0; i <= remain; i++) {
        v.push_back(i);
        find(remain-i, depth+1, v);
        v.pop_back();
    }
}