博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu - 2512 一卡通大冒险 (斯特灵数 && 贝尔数)
阅读量:4286 次
发布时间:2019-05-27

本文共 1091 字,大约阅读时间需要 3 分钟。

    

/**  题意:给你k张不同的卡放到n本书里有多少种放法?(n是无限大)典型的 斯特灵数第二类 +贝尔数 斯特灵数:如:给你k张牌放到n个无标号的盘子里(盘子不能为空)问你有多少种方法;Stirling[i][j] = Stirling[i-1][j-1] + j * Stirling[i-1][j] 表示前i张牌放到j个盘子里的方法数可以由前i-1张牌放到j-1个盘子里的方法数(相当于在其后加一张牌一个盘子) + 前i-1张牌放到j个盘子里(再加一张牌可以放到j个盘子里) * j ;贝尔数:就是斯特灵数的和(即所求值)**/#include
#include
#include
#include
using namespace std;int Stirling[20005][20005];int Bell[2005];void init(){ for(int i = 1;i <= 2000;i++)//斯特灵数 { Stirling[i][i] = 1; for(int j = 1;j < i;j++){ Stirling[i][j] = (Stirling[i-1][j-1] + Stirling[i-1][j] * j)%1000; } } for(int i = 1;i <= 2000;i++)//贝尔数 { for(int j = 1;j <= i;j++) Bell[i] = (Bell[i] + Stirling[i][j]) % 1000; }}int main(){ init(); int t; cin >> t; int n; while(t--){ cin >> n; cout << Bell[n] << endl; }}

斯特灵数第一类:

第一类:n个元素分成k个非空循环排列(环)的方法总数

递推式:s(n+1,k)=s(n,k-1)+n*s(n,k)

解释:考虑第n+1个元素 1、单独形成循环排列,剩下的有s(n,k-1)种方法 2、和别的元素一起形成循环排列,n个元素形成循环排列的方法数是s(n,k),第n+1个可以放在第i个元素左边,共有n种放法,一共是n*s(n,k);

code : 如第二类相似

转:

转载地址:http://dcsgi.baihongyu.com/

你可能感兴趣的文章
matlab读取UCI中获取的.data文件
查看>>
matlab错误:Subscript indices must either be real positive integers or logicals.
查看>>
行列式及其性质
查看>>
matlab 保留固定长度的整数位
查看>>
xshell-常用命令
查看>>
用xshell运行matlab 远程给Linux服务器安装Matlab R2014b
查看>>
在本地电脑使用远程服务器的图形界面——包括 MATLAB、PyCharm 等各种软件
查看>>
向量转置怎么求导(多元线性回归原理推导用)
查看>>
Matlab中布尔值/逻辑值与数值型类型的相互转换
查看>>
Matlab 并行代码
查看>>
matlab中的并行方法与理解(2):parfor中的变量类型
查看>>
CentOS 7 命令行模式安装teamviewer13
查看>>
teamviewer Linux centos7安装使用详细
查看>>
【MATLAB】线条标记符大小设置
查看>>
MATLAB中矩阵的逻辑索引方法
查看>>
windows下go dep环境搭建
查看>>
EMQX docker安装及运行
查看>>
使用python和MQTT.fx连接mqtt
查看>>
EMQTT的ACL鉴权(topic权限控制)
查看>>
emqx客户端用户名密码登录验证配置
查看>>