原题链接:集合的划分
解题思路:
注意事项:
参考代码:
#include
using namespace std;
long long n,k;
long long f1(long long n,long long k)//一般用ll防止数据过大
{
if(n<k||k==0)
return 0;//当n<k 集合多于元素 肯定有空的所以为0,集合=0 肯定为0;
else if(k==1||k==n)
return 1;//同理 一个集合和集合数等于元素的数量 return 1;
else
return f1(n-1,k-1)+k*f1(n-1,k);//第一部分为一个元素单独站一个集合,第二部分为一个元素和m个元素(随机,小于n即可)一起占一个集合
}
int main()
{
cin>>n>>k;
long long p=f1(n,k);
cout<<p;
return 0;
}
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复