如输入:
6=6
4+2,4+1+1
3+3,3+2+1,3+1+1+1
2+2+2,2+2+1+1,2+1+1+1+1
1+1+1+1+1+1
定义Q(n,m):表示整数n的”如何加数都不超过m“的划分的数目
一般地,Q(n,m)有一下递归关系:
Q(n,m)=
1 : 1 n=1,m=1
2: Q(n,n) n<m
3: 1+Q(n,n-1) n=m
4: Q(n,m-1)+Q(n-m,m) n>m>1
program:
#include<iostream>
using namespace std;
int dividener(int n , int m )
{
if( n < 1 || m <1 )
return 0;
if( n == 1 || m == 1 )
return 1;
if( n < m )
return dividener ( n , n );
if ( n == m )
return dividener ( n , m-1 ) + 1 ;
if ( n > m )
return dividener( n , m -1 ) + dividener ( n-m , m ) ;
}
int main()
{
int n;
cout<<"n:";
cin>>n;
n=dividener(n,n);
cout<< "summary :"<< n << endl ;
return 0 ;
}
本文探讨了如何计算整数n的'如何加数都不超过m'的划分的数目,通过递归公式来解决这一问题,并提供了一个C++程序实现。
1511

被折叠的 条评论
为什么被折叠?



