設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 無標號...