作者在 2010-10-12 09:11:00 发布以下内容
#include<iostream>
using namespace std;
int *arr;
int n;
void print()
{
cout << n << " = " << arr[0];
int i = 1;
while(arr[i])
cout << " + " << arr[i++];
cout << endl;
}
void process(int arr[], int max, int n)//n为剩余值,max为当前位置可以为最大的数。
{
arr[0] = max < n ? max : n;
if(n == 0)
{
print();
}
for(arr[0]; arr[0]>0; --arr[0])
process(arr+1, arr[0], n-arr[0]);
arr[0] = 0;
}
int main()
{
cout << "Please input a integer:";
cin >> n;
arr = new int[n+1];//多出来一个当哨兵
if(arr)
{
for (int i = 0; i != n; ++i)
arr[i] = 0;
process(arr, n, n);
delete [] arr;
}
else
{
cerr << "memory alloc error" << endl;//英语很烂
}
return 0;
}
using namespace std;
int *arr;
int n;
void print()
{
cout << n << " = " << arr[0];
int i = 1;
while(arr[i])
cout << " + " << arr[i++];
cout << endl;
}
void process(int arr[], int max, int n)//n为剩余值,max为当前位置可以为最大的数。
{
arr[0] = max < n ? max : n;
if(n == 0)
{
print();
}
for(arr[0]; arr[0]>0; --arr[0])
process(arr+1, arr[0], n-arr[0]);
arr[0] = 0;
}
int main()
{
cout << "Please input a integer:";
cin >> n;
arr = new int[n+1];//多出来一个当哨兵
if(arr)
{
for (int i = 0; i != n; ++i)
arr[i] = 0;
process(arr, n, n);
delete [] arr;
}
else
{
cerr << "memory alloc error" << endl;//英语很烂
}
return 0;
}