主题:拆数问题
夜雨听荷
[专家分:40] 发布于 2008-05-05 18:36:00
将100拆成4个数的和,要求求出所有的组合,可以重复,比如100,0,0,0就属于一种,不知道哪位大哥能给出代码,十分感谢.
回复列表 (共1个回复)
沙发
天之痕99 [专家分:40] 发布于 2008-05-06 14:25:00
如果要全排列的话用递归
#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);
}
}
我来回复