問題描述:
n 個元素的集合可以劃分為若干個非空子集。例如,當 n=4 時,集合可以劃分為 15 個不同的非空子集如下:
,,,},
,,},
,,},
,,},
,,},
,,},
,,},
,},,},
,},,},
,},,},
,},}
´程式設計任務:
給定正整數 n,計算出 n 個元素的集合可以劃分為多少個不同的非空子集。
´資料輸入:
由檔案 input.txt 提供輸入資料。檔案的第 1 行是元素個數 n。
´結果輸出:
程式執行結束時,將計算出的不同的非空子集數輸出到檔案 output.txt 中。
輸入檔案示例 輸出檔案示例
input.txt output.txt
5 52
【題解】
bell數的第i項就對應了1..i的非空集合劃分個數。
可以這樣遞推
b[0]=b[1]=1(空或只有乙個元素的話,那麼只有乙個劃分,就是都把它們本身放在乙個集合裡)
否則```cpp
for (int i = 2;i <= n;i++)
bell[i] = temp;
}```【**】
#include #define ll long long
using namespace std;
const int n = 18;
int n;
ll f[n+10];
ll bell[n+10];
ll c(int n,int m)
int main()
bell[i] = temp;
}int n;
scanf("%d",&n);
printf("%i64d\n",bell[n]);
return 0;
}
9409 集合的劃分問題
time limit 3 second memory limit 2 mb 問題描述 n 個元素的集合可以劃分為若干個非空子集。例如,當n 4 時,集合可以劃分為15 個不同的非空子集如下 其中,集合 由1 個子集組成 集合,由2 個子集組成 集合,由3 個子集組成 集合,由4 個子集組成。程式設計...
2 8 集合劃分問題 給定要分成幾個集合
問題描述 n 個元素的集合可以劃分為若干個非空子集。例如,當 n 4 時,集合可以劃分為 15 個不同的非空子集如下 其中,集合 由 1 個子集組成 集合,由 2 個子集組成 集合,由 3 個子集組 成 集合,由 4 個子集組成。程式設計任務 給定正整數 n 和 m,計算出 n 個元素的集合可以劃分...
例4 5 集合的劃分
時間限制 1000 ms 記憶體限制 65536 kb 提交數 218 通過數 158 題目描述 設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是集...