点击获取原题链接
Fighting_小银考呀考不过四级 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 四级考试已经过去好几个星期了,但是小银还是对自己的英语水平担心不已。 小银打算好好学习英语,争取下次四级考试和小学弟小学妹一起拿下它! 四级考试的时候,监考老师会按考号分配固定的座位,但唯一不变的是每两个人之间肯定至少会留下两个空座位,原因相信大家都懂得。 那么问题来了,我们现在只关注教室里的一排座位,假设每排有n个座位,小银想知道这一排至少坐一个人的前提下,一共有多少种坐法。 Input 多组输入。 第一行输入整数n,代表教室里这一排的座位数目。(1 <= n <= 45) Output 输出种类数目。输入输出各占一行,保证数据合法。 Example Input 1 3 5 Example Output 1 3 8 Hint Author Casithy /***这道题有点难度***/ /***首先如新添的作为如果做人那么前面两个座位不能做人 则为 a[i-3]***/ /***第二如果最后一个添加的座位不做人那么前面的人可以不顾及最后一个座位那么就是a[i-1]**/ /***最后的一点就是题目要求不能有 人数为0的情况 所以考虑这种情况 可以让前面都不做人最后一个做人 那么早加1***/ /**如果没有考虑加一的情况 可能会考虑为 菲波那切数列 从 第六项就不是菲波那切数列了***/ #include <bits/stdc++.h> using namespace std; long long a[45];///存放数据 int main() { a[1]=1; a[2]=2; for(int i=3;i<=45;i++) { a[i]=a[i-1]+a[i-3]+1;///递推公式 } int n; while(cin>>n ) { printf("%lld\n",a[n]); } return 0; }