问题:
有一些装有铀(用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;
else
return 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;
}