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;
}

上一篇:#Leetcode# 1025. Divisor Game


下一篇:【Linux基础】查看某一端口是否开放(1025为例)