危险的组合

来源:互联网 发布:湖人vs快船数据 编辑:程序博客网 时间:2024/04/28 20:15

问题:

有一些装有铀(用U表示)和铅(用L表示)的盒子,数量均足够多。要求吧n个盒子放成一行,但至少有3个U 放在一起,有多少中放法?n<=30.


//此处的int factorial(int)为满足本题要求,做了一点修改。

#include<iostream>#include<cstdlib>using namespace std;int factorial(int n){if(n<=0)return 1;elsereturn 2*factorial(n-1);}int arrange(int n){if(n<3)return 0;if(n==3)return 1;int ans=0;for(int i=1;i<=n-2;++i) ans+=(factorial(i-2)-arrange(i-2))*factorial(n-i-2);return ans;}int main(){int n;while(cin>>n)cout<<arrange(n)<<endl;return 0;}



0 0