求助
  • 板块灌水区
  • 楼主__QWQ_qwq__
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/3/12 11:56
  • 上次更新2023/10/23 21:47:35
查看原帖
求助
845367
__QWQ_qwq__楼主2023/3/12 11:56

题目描述

把一个正整数N表示成如下表达式的一系列正整数的和,叫做整数N(N≤40)的一个划分。

某个正整数N的不同表达式的个数称为整数N的分划数。编程输出所有的划分 。

输入格式

一个整数N。

输出格式

多行数据,前面多行输出划分情况,最后一行一个整数,即划分数。

样例

输入样例

4

输出样例:

5

提示

样例解释:

4=4;

4=3+1;

4=2+2;

4=2+1+1;

4=1+1+1+1

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[40],ans;
void dfs(int x,int y)
{
	if(y==0)
	{
		ans++;
		return ;
	}
	for(int i=a[x-1];i<=y;i++)
	{
		a[x]=i;
		dfs(x+1,y-i);
	}
}
int main()
{
	cin>>n;
	dfs(1,n);
	cout<<ans;
 } 



2023/3/12 11:56
加载中...