問題描述:對於n個不同的物品分成k個非空集合,求分類方案數。
對於這種分類的方法,可以採用斯特林數的方法來解決。
下面說下第二類斯特林數:
dp[i][j]=(dp[i-1][j-1]+(j*dp[i-1][j]);這個問題可以看成:1,n-1個物品分成了k-1集合,那麼還有最後乙個物品就只能在最後乙個集合中 2,n-1個物品分成了k個集合,那麼還有最後乙個物品就有k種方案,結果為k*dp[n-1][k]。
#include
using namespace std;
const int maxn=1e9+7;
typedef long long ll;
ll dp[101][101];
int main()
}while(~scanf("%d %d",&n,&k))
return 0;
}
斯特林數 斯特林反演
第一類stirling數 s n,m 也可記為 beginn m end 第一類stirling分為無符號第一類stirling數 s u n,m 和帶符號第一類stirling數 s s n,m 他們分別表現為其公升階函式和降階函式的各項係數,形式如下 x x cdot x 1 cdot x 2 ...
斯特林數(Stirling)
第一類斯特林數表示的是將n個不同元素分成k個不同的環的方案數。兩個環不相同當且僅當這兩個環不能通過旋轉得到。記作s n,k 遞推關係的說明 1.考慮第n個物品,n可以單獨構成乙個非空迴圈排列,這樣前n 1種物品構成k 1個非空迴圈排列,方法數為s n 1,k 1 2.也可以前n 1種物品構成k個非空...
有關斯特林數
這種情況即只需要考慮每個人左邊是誰就ok啦。考慮第n個人怎麼插入,他既可以直接自己成乙個環,也可以插到之前的人中間。s n,k s n 1,k 1 s n 1,k n 1 因為這個人有n 1個地方可以塞進去 s n,k 表示n個人站成k個圓的方案數 與上面的區別是,上面需要考慮每個圓裡面的元素是怎麼...