#include "stdio.h"
int q(int n, int m) //正整数n的划分中,最大加数不超过m的划分个数
{
if(m==1) return 1; //当最大加数不超过1时,只有一种形式 n=1+1+1+1...
else if(n<m) return q(n, n); //最大加数实际上不能大于n
else if(n==m) return 1 + q(n, n-1); //最大加数=n 和 最大加数<=n-1组成
else return q(n,m-1) + q(n-m,m); //最大加数-1的划分数目 + n-m的最大加数=m的划分数目
}
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", q(n,n)); //正整数n的划分个数
return 0;
}
整数划分问题
最新推荐文章于 2022-11-08 20:12:17 发布