時間限制: 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,j≤k i≠j)
3.s1 ∪ s2 ∪ s3 ∪ … ∪ sk = s
則稱s1,s2,……,sks1,s2,……,sk 是集合s的乙個劃分。它相當於把s集合中的n個元素a1,a2,……,ana1,a2,……,an 放入k個(0<k≤n<30)無標號的盒子中,使得沒有乙個盒子為空。請你確定n個元素a1,a2,……,ana1,a2,……,an 放入k個無標號盒子中去的劃分數s(n,k)。
給出n和k。
n個元素
a1,a2,……,ana1,a2,……,an 放入k個無標號盒子中去的劃分數s(n,k)。
10 6
22827
/*對於任一元素a(n)有兩種情況 1:a(n)存在於k個子集中,那麼我們只需要把剩下的a(1)-a(n-1)劃分到k-1個子集 則digui(i-1,j-1)
2.a(n)不是k個子集中的乙個,那麼a(n)必定和其他元素構成子集那麼就是把a(1)-a(n-1)劃分為k個子集然後把a(n)
任意放入乙個子集則有j*digui(i-1,j)
遞迴關係就是:digui(i-1,j-1)+j*digui(i-1,j)
*/#include
#include
using
namespace
std;
int digui(int i,int
j)
intmain ()
return
0;
}
遞推遞迴 集合的劃分
設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 無標號的盒子中,...
遞迴與遞推 集合的劃分
設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 ...
集合的劃分
問題描述 設s是乙個具有n個元素的集合,s a1,a2,an 現將s劃分成k個滿足下列條件的子集合s1,s2,sk 且滿足 輸入樣例 setsub.in 23 7 輸出樣例 setsub.out 4382641999117305 演算法分析 先舉個例子,設s 1,2,3,4 k 3,不難得出s有6種...