日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu - 2512 一卡通大冒险 (斯特灵数 贝尔数)

發布時間:2025/3/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu - 2512 一卡通大冒险 (斯特灵数 贝尔数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://acm.hdu.edu.cn/showproblem.php?pid=2512? ??

/** 題意:給你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<cstdio> #include<cstring> #include<iostream> #include<algorithm> 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://www.cnblogs.com/xiaohongmao/p/3645517.html

總結

以上是生活随笔為你收集整理的hdu - 2512 一卡通大冒险 (斯特灵数 贝尔数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。