NOIP 冲刺:常见的递推之第二类斯特林数
来源:互联网 发布:编程实现一个冒泡排序 编辑:程序博客网 时间:2024/05/21 10:09
第二类斯特林数
例题:
给定n 个有标号的球,标号依次为1,2,…,n。将这n个球放入r 个相同的盒子里,不允许有空盒,问有多少种放置方法。
例如把4个球放入2个盒子有7种方法,这7 种不同的放置方法依次为:
{(1),(234)}, {(2),(134)},
{(3),(124)}, {(4),(123)},
{(12),(34)}, {(13),(24)},{(14),(23)}。
我们设一个状态:f[i][j] 代表把i个球放入j个盒子里(盒子不空)的总计方案数,那么,对于每一个球,我们都有两种情况:
1.新开一个盒子 那么f[i][j]=f[i-1][j-1]
2.不新开一个盒子 那么可以把他放入每一个盒子中,所以f[i][j]=f[i-1][j]*j
所以转移方程为f[i][j]=f[i-1][j]*j+f[i-1][j-1];
所以没了,f[n][r] 即为所求
注意边界条件 f[i][i]=1; f[i][0]=0;
#include <cstdio>#include <iostream>using namespace std;int n,r;long long f[50][50];//把i个蛋放入j个框中的方案数 int main(){ scanf("%d%d",&n,&r); f[1][1]=1; f[0][0]=0;//这个好像是第二类斯特林数 for(int i=1;i<=n;i++){ f[i][i]=1; f[i][0]=0; } for(int i=2;i<=n;i++){ for(int j=1;j<=r;j++){ f[i][j]=f[i-1][j]*j+f[i-1][j-1]; } } cout<<f[n][r]; return 0;}
阅读全文
0 0
- NOIP 冲刺:常见的递推之第二类斯特林数
- NOIP 冲刺:常见的递推之错排公式
- NOIP 冲刺:常见的递推之卡特兰数
- NOIP 冲刺之manacher模板
- NOIP 冲刺之矩阵DP
- 冲刺NOIP!
- Noip冲刺
- noip冲刺
- 【NOIP冲刺】
- 阿柟的NOIP冲刺计划
- NOIP 冲刺 模板:树的直径
- 第二类斯特林数的递推公式
- NOIP冲刺计划
- noip冲刺 持续更新
- 【plan】noip冲刺计划
- 第一题:奇怪的贸易(提高组第二试2011年10月22日)(2011年NOIP冲刺模拟试题)
- 【递推】【NOIP模拟】彩灯的问题 Lights
- 【模拟赛】qbxt金秋冲刺训练营杯NOIP模拟赛第二场D1
- 教你五招:防御互联网最可怕搜索Shodan
- 水仙花数C++
- cocos2d-js下的热更新机制
- Markdown学习
- 解决A generic error occurred in GDI+的问题
- NOIP 冲刺:常见的递推之第二类斯特林数
- eclipse报内存溢出
- 乐观锁与悲观锁
- 我的机器学习之路(三)
- [App] OpenVPN 2.3.14 搭建
- Word中插入表格与柱状图饼状图技术经验分享
- webpack+vue初始化项目基本
- Matlab 自定义自己的 colormap(注意其中的一个坑)
- set path in cmd in windows