考察点
斐波那契数列
题目描述
在一个班级中挑选N个学生排成一列座位(保证有足够多的男生与足够多的女生),要求座位序列中男生互不相邻,求解有多少种排列方式?(挑选男生与女生的数量与排列方式均为任意)
例如挑选三个学生,那么所有排列为: 女女女、女男女,男女女,女女男,男女男
输入
第一个数为学生总数N(0<N<30)
输出
只有一行,保证男生与男生不相邻,座位排列的所有情况数目的结果
输入样例
3
输出样例
5
代码
#include <iostream> #include <stdio.h> using namespace std; long long n,a[33][2],mod = 1000000007; int main() { a[1][0] = 1; a[1][1] = 1; for(int i = 2; i <= 30; i++) { a[i][0] = a[i-1][1] + a[i-1][0]; a[i][1] = a[i-1][0]; } while(~scanf("%d",&n)) { printf("%d ",a[n][1]+a[n][0]); } return 0; }