整数划分

【问题描述】

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

【输入形式】

一个整数

【输出形式】

所有该数字的划分

【样例输入】

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

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务