在足球赛的看台上,球迷们自发地组织起来为球队呐喊助威。
他们在看台上设置了一个巨型的喇叭,他们希望使喇叭或助威的声音不停交替而不停歇。然而,这个喇叭是由压缩气体驱动的,如果你连续两秒钟强迫让它发声,喇叭就会坏掉。因此,在喇叭可以响的时候,一切都没问题;在喇叭不响的时候,球迷们就得开始呐喊。在比赛开始前,一些球迷聚在一起商量了一个助威方案:这个方案用一列0和1来表示,如果是1,则表示喇叭响,如果是0,则表示球迷呐喊。为保证喇叭不会坏掉,该方案里,不允许有连续的两个1出现。
一个正整数n,表示方案长度。
一个正整数,表示可行的方案数量。
3
5
1
2
【样例1解释】
n=3时,合理方案由000、001、010、100、101,而110、011、111就不可以,故答案为5。
【数据规模】
对于30%的数据:n<10
对于50%的数据:n<20
对于100%的数据:n<45
代码如下:
#include<bits/stdc++.h> using namespace std; int f[45][2]; int main() { int n; cin>>n; f[1][0] = f[1][1] = 1; for(int i=2;i<=n;i++) { f[i][0] = f[i-1][0] + f[i-1][1]; f[i][1] = f[i-1][0]; } cout<<f[n][0] + f[n][1]; return 0; }