遞迴與遞推 集合的劃分

2022-04-14 18:26:59 字數 631 閱讀 6395

設s是乙個具有n個元素的集合,s=,現將s劃分成k個滿足下列條件的子集合s1,s2,……,sk,且滿足:

(1)si≠∅

(2)si∩sj=∅

(3)s1∪s2∪s3∪...∪sk=s

則稱s1,s2,...,sk是集合s的乙個劃分。它相當於把s集合中的n個元素a1,a2,...,an放入k個(0

兩個整數n和k

乙個整數,劃分數s(n,k)。

4 3

6

分析:對於每乙個ai,要麼它單獨在乙個集合裡,這樣就變成了處理s(n-1,k-1)的情況,要麼它與其他元素在乙個集合裡,此時選乙個集合,有k種選法,就變成了處理s(n-1,k)的情況。

綜上:s(n,k)=s(n-1,k-1)+k*s(n-1,k).

#include #include using namespace std;

int solve(int n,int k)

if(k==1)

return solve(n-1,k-1)+k*solve(n-1,k);

}int main()

{ int n,k;

cin>>n>>k;

cout<

遞推遞迴 集合的劃分

設s是乙個具有n個元素的集合,s 現將s劃分成k個滿足下列條件的子集合s1,s2,sk,滿足 1 si 2 si sj 1 i,j k i j 3 s1 s2 s3 sk s 則s1,s2,sk是集合的乙個劃分。它相當於把s集合中的n個元素a1,a2,an放入k個 0 k n 30 無標號的盒子中,...

集合的劃分 遞推)

時間限制 1 sec 記憶體限制 128 mb 提交 9 解決 8 提交 狀態 討論版 命題人 quanxing 設s是乙個具有n個元素的集合,s a1,a2,an s a1,a2,an 現將s劃分成k個滿足下列條件的子集合s1,s2,sks1,s2,sk 且滿足 1 si 2 si sj 1 i,...

集合的劃分 遞迴

題目描述 設s是乙個具有n個元素的集合,s 現將s劃分成k個滿足下列條件的子集合s1,s2,sk,滿足 1 si 2 si sj 1 i,j k i j 3 s1 s2 s3 sk s 則s1,s2,sk是集合的乙個劃分。它相當於把s集合中的n個元素a1,a2,an放入k個 0 k n 30 無標號...