51nod1031(简单斐波拉契数列)

Posted ygeloutingyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod1031(简单斐波拉契数列)相关的知识,希望对你有一定的参考价值。

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1031

 

题意:中文题诶~

 

思路:对于第x块骨牌的情况,我们用a[x]表示其方法数;其比x-1块骨牌时多了一块骨牌,多出的骨牌有两种放法:

1.我们可以直接将其竖着添加在最末端,那么其排列数就为就是前x-1块骨牌的排列数,即为a[x-1];

2. 我们也可以将其和其前面一块骨牌一起横着放,那么其排列数就是前x-2块骨牌的排列数,即为a[x-2];

所以有 a[x]=a[x-1]+a[x-2];

 

代码:

 1 #include <bits/stdc++.h>
 2 #define MAXN 1010
 3 using namespace std;
 4 
 5 const int mod=1e9+7;
 6 
 7 int main(void){
 8     int a[MAXN], n;
 9     a[0]=1, a[1]=1;
10     cin >> n;
11     for(int i=2; i<=n; i++){
12         a[i]=(a[i-1]+a[i-2])%mod;
13     }
14     cout << a[n] << endl;
15     return 0;
16 }

 

以上是关于51nod1031(简单斐波拉契数列)的主要内容,如果未能解决你的问题,请参考以下文章

斐波拉契数列的代码书写和分析

《剑指Offer》题目——斐波拉契数列

斐波拉契数列的递归非递归公式法多种方法实现

Python 探讨斐波拉契数列模素数的周期问题

实现斐波拉契数列的四种方式python代码

斐波拉契