算法——斐波那契(1)

来源:互联网 发布:vb打开文件夹 编辑:程序博客网 时间:2024/06/06 07:09

1.一只青蛙一次可以跳上一级台阶,也可以跳上二级台阶
为了跳上n级台阶一共有几种跳法

解析
1.n=1 1种
2.n=2 2种
3.n级台阶可以由n-1或者n-2级台阶跳上来f(n)=f(n-2)+f(n-1)

#include <iostream>using namespace std;int a[100]={    0,1,2};int jump(int n){    if(n==1)return 1;    if(n==2)return 2;    for(int i=3;i<=n;i++)    {        a[i]=a[i-1]+a[i-2];     }    return a[n];}int main(){    int n;    while(cin>>n)    {        cout<<jump(n)<<endl;;    }    return 0;}

2.我们可以用2*1的小矩形无重叠一个大的2*n的矩形,我们用n个这样的小矩形有多少种覆盖方法
解析
小矩形可以横着放或者竖着放
1.横着放 矩形变成了2*(n-2)大小的矩形的覆盖方法
2.竖着放 矩形变成了2*(n-1)大小的矩形的覆盖方法
f(n)=f(n-1)+f(n-2)
这里写图片描述

int place(int n){    if(n==1)return 1;    if(n==2)return 2;    for(int i=3;i<=n;i++)    {        a[i]=a[i-1]+a[i-2];     }    return a[n];}
0 0
原创粉丝点击