首页 > 其他 > 详细

【TFLSnoi李志帅】---函数递归

时间:2020-08-20 22:53:26      阅读:98      评论:0      收藏:0      [点我收藏+]

fyx的博客地址,墙裂推荐!博客:https://www.cnblogs.com/qwn34/

技术分享图片

 

 

1315:【例4.5】集合的划分             

老狮:这也是一道经典例题,做好这道题,你的递归差不多就没问题了【狗头保命】


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 9463     通过数: 4074

【题目描述】

设S是一个具有n个元素的集合,S?a1a2an?现将S划分成k个满足下列条件的子集合S1S2…Sk,且满足:

1.Si

2.SiSj          (1ijki≠j)

3.S1S2S3SkS

则称S1S2Sk是集合S的一个划分。它相当于把S集合中的n个元素a1a2an 放入k个(0kn30)无标号的盒子中,使得没有一个盒子为空。请你确定n个元素a1a2an 放入k个无标号盒子中去的划分数S(n,k)

【输入】

给出nk。

【输出】

n个元素a1a2an 放入k个无标号盒子中去的划分数S(n,k)

【输入样例】

10 6

【输出样例】

22827


————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
这道题有很多乱七八糟的符号,看起来有点怪怪的
翻译过来就是。。。

1.Si0     没有空盘子

2.Si-Sj!0       也就是说每个盘子里元素数量各不相同   (1ijki≠j)

3.S1+S2+S3++SkS     每个元素都要分进盘子

 

 

上代码!

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int n,k;
 4 long long jh(int n,int k)
 5 {
 6     if(n<k || k==0)return 0;//递归边界,当盒子数比元素数大时,归零;当没有盒子时,归零;
 7     else if(k==n || k==1)return 1;//递归边界,当盒子数等于元素数时,归一;当只有一个盒子时,归一;
 8     return jh(n-1,k)*k+jh(n-1,k-1);//递归式
 9 }
10 int main()
11 {
12     cin>>n>>k;
13     cout<<jh(n,k);
14     return 0;
15 }

 

最后————

fyx的博客地址,墙裂推荐!博客:https://www.cnblogs.com/qwn34/

技术分享图片

 

【TFLSnoi李志帅】---函数递归

原文:https://www.cnblogs.com/TFLSc1908lzs/p/13538049.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!