4117:简单的整数划分问题

102 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 在这里插入图片描述
递归思想,将问题简单化,对于整数n,选取不大于n的数m作为一个因子,然后再数n-m中选取不大于m的数作为因子,一直递归下去。

#include<iostream>
using namespace std;
int sum = 0;

void Find(int n,int m)
{
	if(n == 0)//n>=i的n-i会逐渐到达0,这就是临界条件 
	{
		sum +=1;//每找到一个sum加1 
		return ;
	}
	for(int i = m; i >= 1; i--)
	{
		if( n-i >= 0)
		{
			Find(n-i,i);
		}
	}
}



int main(){
	int n;
	while(cin>>n)
	{
		Find(n,n);
		cout<<sum<<endl;
		sum=0;//记住出初始化 
	}
}