整数划分
【问题描述】
任意输入一个整数,输出结果能够用递归方法实现整数的划分。
【输入形式】
一个整数
【输出形式】
所有该数字的划分
【样例输入】
6
【样例输出】
6
5+1
4+2
4+1+1
3+3
3+2+1
3+1+1+1
2+2+2
2+2+1+1
2+1+1+1+1
1+1+1+1+1+1
c++代码
#include <iostream>
using namespace std;
int a;
int m[100];
void q(int sum, int k, int prio)
{
if (sum > a)
{
return;
}
if (sum == a)
{
int i;
for (i = 0;i < k - 1;i++)
{
cout << m[i] << "+";
}
cout << m[i] << endl;
}
else
{
for (int j = prio; j > 0; j--)
{
m[k] = j;
sum += j;
q(sum, k + 1, j);
sum -= j;
}
}
}
int main()
{
cin >> a;
q(0, 0, a);
}