集合的划分(信息学奥赛一本通-T1315)
生活随笔
收集整理的這篇文章主要介紹了
集合的划分(信息学奥赛一本通-T1315)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目描述】
設S是一個具有n個元素的集合,S=?a1,a2,……,an?,現將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的一個劃分。
它相當于把S集合中的n個元素a1,a2,……,an放入k個(0<k≤n<30)無標號的盒子中,使得沒有一個盒子為空。請你確定n個元素a1,a2,……,an放入k個無標號盒子中去的劃分數S(n,k)。
【輸入】
給出n和k。
【輸出】
n個元素a1,a2,……,an放入k個無標號盒子中去的劃分數S(n,k)。
【輸入樣例】
10 6
【輸出樣例】
22827
思路:計算 C(n,k) ,直接遞歸即可
【源程序】
#include<iostream> using namespace std; long long calculate(long long n,long long k) {if(n<k||k==0)return 0;if(n==k||k==1)return 1;return calculate(n-1,k-1)+k*calculate(n-1,k); } int main() {long long n,k;cin>>n>>k;cout<<calculate(n,k)<<endl;return 0; }?
總結
以上是生活随笔為你收集整理的集合的划分(信息学奥赛一本通-T1315)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动路线(信息学奥赛一本通-T1194)
- 下一篇: 数楼梯(洛谷-P1255)