如题:
思路:
1.特殊情况:
1)m=n return1。
2)m=1 return1。
2.递归
1)把前n-1个元素分成m-1份,然后n号元素单独放。
2)把前n-1个元素分成m份,然后把n号元素插入到这m个集合中(有m种插法)总数就是
F(n,m) =F(n-1,m-1) + m * F(n-1,m)
代码:
#include<stdio.h>
int F(int n,int m){
if(m == 1 || n == m)
return 1;
return m*F(n-1,m) + F(n-1,m-1);
}
int main(){
int n;
int i;
int sum = 0;
scanf("%d",&n);
for(i = 1; i <= n; i++)
sum += F(n,i);
printf("%d",sum);
return 0;
}
标签:分成,return,int,元素,return1,划分,集合
From: https://www.cnblogs.com/kirei7/p/17892988.html