vijosP1210 盒子与球
【思路】
Stirling+全排列。
因为第二类stirling所求是没有标明盒子顺序的方案数,所以最后需要乘一个全排列。
【代码】
1 #include<iostream> 2 using namespace std; 3 4 int n,k; 5 6 inline int S(int n,int k) { 7 if(k==0 || k>n) return 0; 8 if(k==n) return 1; 9 10 cout<<n<<" "<<k<<" "; 11 return S(n-1,k-1)+k*S(n-1,k); 12 } 13 14 int main() { 15 cin>>n>>k; 16 int P=1; for(int i=1;i<=k;i++) P*=i; 17 cout<<P*S(n,k); 18 }
如果数据范围加大可以尝试对S记忆化。