题目大意:输入一个数n,只由0和1组成的长度为n的序列,其中1不相邻的序列有多少种。
很水的一道数学题,可以用排列排列组合(插空法)做,也可以用递推的方法。
我用的是递推的方法:
若末尾为0,则可添加0或1(两种)
若末尾为1,则只可添加0(一种)
#include <iostream>
using namespace std;
int main()
{
int t,n,k=1;
cin>>t;
while(t--)
{
cin>>n;
cout<<"Scenario #"<<k++<<":"<<endl;
if(1==n) {cout<<2<<endl;if(t>0) cout<<endl;continue;}
int end0=1,end1=1;
for(int i=2;i<n;i++)
{
int temp=end1;
end1=end0;
end0+=temp;
}
cout<<end0*2+end1<<endl;
if(t>0) cout<<endl;
}
return 0;
}