整数划分

【问题描述】

任意输入一个整数,输出结果能够用递归方法实现整数的划分。

【输入形式】

一个整数

【输出形式】

所有该数字的划分

【样例输入】

    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);
}
全部评论

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
牛客969571862号:昨天捞我今天面这个,岗位一模一样,感觉就是面着玩
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务