G 考四级座位
监考老师会按考号分配固定的座位,但唯一不变的是每两个人之间肯定至少会留下两个空座位,原因相信大家都懂得。
那么问题来了,我们现在只关注教室里的一排座位,假设每排有n个座位,小银想知道这一排至少坐一个人的前提下,一共有多少种坐法。
该问题类似于Fibonacci sequence问题,分析n个座位时,只考虑第n个有人没有,若有,则考虑剩下得n-2个;若没有,则考虑剩下的n-1个;
即f【n】=f【n-2】+f【n-1】;终止条件为f【1】=1;f【2】=2;f【3】=3;
代码如下:
#include<bits/stdc++.h>
using namespace std;
int f(int n)
{
if(n==1) return 1;
if(n==2) return 2;
if(n==3) return 3;
else return f(n-1)+f(n-3)+1;
}
int main()
{
int n;
while(cin>>n)
cout<<f(n)<<endl;
return 0;
}