第一类斯特林数、第二类斯特林数、贝尔数总结+模板
转载https://blog.csdn.net/sxh759151483/article/details/83420939
第一类斯特林数
解决问题:给n个元素,求出k个环排列的方法数
Stirling[n][k]
1
1 1
2 3 1
6 11 6 1
24 50 35 10 1
120 274 225 85 15 1
720 1764 1624 735 175 21 1
5040 13068 13132 6769 1960 322 28 1
40320 109584 118124 67284 22449 4536 546 36 1
362880 1026576 1172700 723680 269325 63273 9450 870 45 1
const int maxn = 21; ll Stirling[maxn][maxn], fac[maxn] = {1}; void init() { for(ll i = 1; i < maxn; i++) fac[i] = fac[i - 1] * i; Stirling[0][0] = 0; Stirling[1][1] = 1; for(ll i = 2; i < maxn; i++) { for(ll j = 1; j <= i; j++) { Stirling[i][j] = Stirling[i - 1][j - 1] + (i - 1) * Stirling[i - 1][j]; } } }
第二类斯特林数
将n个不同元素拆分成m个集合的方案数
Stirling[n][m]
1
1 1
1 3 1
1 7 6 1
1 15 25 10 1
1 31 90 65 15 1
1 63 301 350 140 21 1
1 127 966 1701 1050 266 28 1
1 255 3025 7770 6951 2646 462 36 1
1 511 9330 34105 42525 22827 5880 750 45 1
const int maxn = 21; ll Stirling[maxn][maxn]; void init() { Stirling[0][0] = 0; Stirling[1][1] = 1; for(ll i = 2; i < maxn; i++) { for(ll j = 1; j <= i; j++) { Stirling[i][j] = Stirling[i - 1][j - 1] + j * Stirling[i - 1][j]; } } }
贝尔数
n个数可以划分成多少个集合
每个贝尔数是第二类斯特林数的和
Bell[n]
ll Bell[maxn]; void init() { ll x[maxn]; Bell[0] = 1LL; Bell[1] = 1LL; x[0] = 1LL; for(int i = 2; i < maxn; i++) { x[i - 1] = Bell[i - 1]; for(int j = i - 2; j >= 0; j--) x[j] = (x[j]%mod + x[j + 1]%mod)%mod; Bell[i] = x[0]%mod; } }
HDU:2512(贝尔数裸题)
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e4+10; const ll mod=1000; int n; ll Bell[maxn]; void init() { ll x[maxn]; Bell[0] = 1LL; Bell[1] = 1LL; x[0] = 1LL; for(int i = 2; i < maxn; i++) { x[i - 1] = Bell[i - 1]; for(int j = i - 2; j >= 0; j--) x[j] = (x[j]%mod + x[j + 1]%mod)%mod; Bell[i] = x[0]%mod; } } int main(){ int T; init(); while(cin>>T){ while(T--){ cin>>n; cout<<Bell[n]<<endl; } } return 0; }
原文地址:https://www.cnblogs.com/lin1874/p/11405879.html
- vue内置指令详解——小白速会
- javascript 函数详解
- 深海中的STL—nth_element
- javascript Object与Array用法
- vue class与style 绑定详解——小白速会
- java8-Stream之数值流
- POJ 3694 Network(Tarjan求割边+LCA)
- java之Cookie详解
- Ajax详解
- 1611: [Usaco2008 Feb]Meteor Shower流星雨
- 3893: [Usaco2014 Dec]Cow Jog
- 3892: [Usaco2014 Dec]Marathon
- BZOJ 2793: [Poi2012]Vouchers(调和级数)
- 3891: [Usaco2014 Dec]Piggy Back
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 手把手教你打造高效的 Kubernetes 命令行终端
- docker save load export import的区别
- 使用ABAC控制数据访问
- linux 压力测试工具之ab
- 什么是Python Wheels?为什么要关心它?
- Nginx fastcgi_cache权威指南
- 玩转dockerfile
- redis实战第六篇 手动创建redis cluster
- docker容器入门最佳教程
- redis实战第五篇 jedis 连接 redis sentinel详解
- redis实战第四篇 手动容灾故障转移记录
- 10条很棒的Python一行代码
- 如何在一个Docker中同时运行多个程序进程?
- 如何在CentOS / RHEL 7上启用IPv6
- Golang中的RegExp正则表达式用法指南