回 帖 发 新 帖 刷新版面

主题:拆数问题

将100拆成4个数的和,要求求出所有的组合,可以重复,比如100,0,0,0就属于一种,不知道哪位大哥能给出代码,十分感谢.

回复列表 (共1个回复)

沙发

如果要全排列的话用递归

#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;

#define N 4
void split(int num, int* a, int n);
int a[N];
ofstream ofs("output.txt");

int _tmain(int argc, _TCHAR* argv[])
{
    split(100, a, N);
    return 0;
}

void print(int n)
{
    for (int i = 0; i < N - 1; ++i)
    {
        ofs << a[i] << ' ';
    }
    ofs << n << endl;
}
void split(int num, int* p, int n)
{
    if (n == 1)
    {
        print(num);
        return;
    }
    for (int i = 0; i <= num; ++i)
    {
        *p = i;
        split(num - i, p + 1, n - 1);
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册