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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SDNU 1011.盒子与球(斯特林函数)

發布時間:2024/4/15 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SDNU 1011.盒子与球(斯特林函数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

現有r個互不相同的盒子和n個互不相同的球,要將這n個球放入r個盒子中,且不允許有空盒子。則有多少種放法?

Input

n, r(0 <= n, r <= 10)。

Output

有多少種放法。

Sample Input

3 2

Sample Output

6

Source

SDNU ACM-ICPC 2010復賽(2010級) 思路:這道題用的是斯特林函數。 第一類斯特林函數:將 n 個不同元素構成m個圓排列,如果要將n + 1個元素構成m個圓排列,考慮第n + 1個元素: ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)如果n個元素構成m - 1個圓排列,則第n + 1個元素獨自構成一個圓排列:s(n, m - 1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)如果n個元素構成m個圓排列,則第n + 1個元素插入任意元素的左邊:n * s(n, m); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 總和s(n + 1, m) = s(n, m - 1) + n * s(n, m)。 第二類斯特林函數:將n個不同的球放入m個無差別的盒子中,要求盒子非空,考慮第n + 1個元素: ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)如果n個元素構成m - 1個集合,則第n + 1個元素就構成單獨一個集合:s(n, m - 1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)如果n個元素構成m個集合,則第n + 1個元素就查到任意一個集合:m * s(n, m); ????????????????????? ? ? ? ? 總和s(n + 1, m) = s(n, m - 1) + m * s(n, m)。 但是題目要求是r個不同的盒子,r個不同盒子的排列就是 r!,所以最后的答案應該乘以r的階乘。 #include<bits/stdc++.h> using namespace std;#define ll long long #define eps 1e-9const int inf = 0x3f3f3f3f; const int mod = 1e9+7; const int maxn = 100000 + 8;int a[18][18];int main() {int n, r, sum = 1;memset(a, 0, sizeof(a));scanf("%d%d", &n, &r);a[1][1] = 1;for(int i = 2; i <= n; i++){for(int j = 1; j <= r; j++){a[i][j] = a[i - 1][j - 1] + a[i - 1][j] * j;}}for(int i = 1; i <= r; i++)sum *= i;printf("%d\n", sum * a[n][r]);return 0; }

?

轉載于:https://www.cnblogs.com/RootVount/p/11418879.html

總結

以上是生活随笔為你收集整理的SDNU 1011.盒子与球(斯特林函数)的全部內容,希望文章能夠幫你解決所遇到的問題。

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