其他分享
首页 > 其他分享> > 1025数的分化

1025数的分化

作者:互联网

在这里插入图片描述
我们可以搜索每一组数时用数组存起来,为了避免重复当搜索到第k组数时,可以从第a[k-1]开始搜起。当k==m时如果剩下的数比之前的大,ans++。如果n已经为0直接退出。

#include<iostream>
#include<cstdio>
using namespace std;
int n,k,ans,a[10];
void dfs(int x)
{
	if(n==0) return ;
	if(x==k)
	{
		if(n>=a[x-1]) ans++;
		return ;
	}
	for(int i=a[x-1];i<=(n/(k-x+1));i++)
	{
		a[x]=i;
		n-=i;
		dfs(x+1);
		n+=i;
	}
}
int main()
{
	cin>>n>>k;
	a[0]=1;
	dfs(1);
	cout<<ans;
	return 0;
}

标签:1025,return,分化,int,dfs,++,ans,include
来源: https://blog.csdn.net/zailingzhe/article/details/88649462