将1-n划分为m个子集的个数
#include<bits/stdc++.h>
using namespace std;
int n;
int m;
//把前x个元素的集合划分为u个子集
int f(int x,int u){
if(x==u||u==1)return 1;
//递归方程:f(x,u)=f(x-1,u)*n+f(x-1,u-1)
return f(x-1,u)*u + f(x-1,u-1);
}
int main(){
cin>>n>>m;
cout<<f(n,m);
return 0;
}
将1-n划分为子集的个数。
#include<bits/stdc++.h>
using namespace std;
int n;
int res=0;
//把前x个元素的集合划分为u个子集
int f(int x,int u){
if(x==u||u==1)return 1;
return f(x-1,u)*u + f(x-1,u-1);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
res+=f(n,i);
}
cout<<res;
return 0;
}