给出n和k。
n个元素a1,a2,……,an放入k个无标号盒子中去的划分数S(n,k)。
10 6
22827
#include <iostream> using namespace std; long long Split(int n,int plate) //等同于n个不同的数 放到相同的盘子里了 { //这步不能跟后面的交换,因为n==plate==0这情况应返回是0,而不是1 if(n<plate||plate==0) //例9个数放到 10个盘子,这种情况不能使每个盘子有数字,则为0 return 0; if(n==plate||n==1) //一个数 只能有一种放法,如果n个数,n个盘子也只能有一个放法 return 1; // 一个数 放一个盘子+ 这个数,先不放,让别的先放好放好共有 Split(n-1,plate)种,然后等他们放好后,再放其中一个盘子, //显然是分步原理,根据概论率分步原理得 plate* Split(n-1,plate) return Split(n-1,plate-1)+Split(n-1,plate)*plate; } int main() { int n,k; cin>>n>>k; cout<<Split(n,k); return 0; }