zoukankan      html  css  js  c++  java
  • C1-Zexal的过河

    题目描述

    Zexal打算借助河中间的石砖过到河对岸去Zexal第一块石砖出发,接下来他可以走到第二块石砖或第三块石砖,有时候走的很不爽,甚至可以直接跨过两个石砖,到达第四块石砖,但是不能连续两次这种操作,因为这样消耗体能比较大。现在假设河中含nn块石砖,且这些石砖呈直线分布,请你计算出Zexal从第一块石砖出发有多少种安全的过河方法。

    输入

    输入将由多组测试数据组成,以EOF结尾。

    每组数据只有一行,为河中的总石砖数n0n50

    输出

    对于每组数据,输出一行,为过河的方法数。

    输入样例

    1
    2
    3

    输出样例

    1
    2
    4

    样例解释

    1:一步走完;
    2:先走到2再走完,或者直接走完;
    3:111或12或21或3。

    容易想出来的代码

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    long long n,a[51][2];
    int main()
    {
        a[1][0] = 1;
        a[2][0] = 2;
        a[3][0] = 3;
        a[1][1] = 0;
        a[2][1] = 0;
        a[3][1] = 1;
        for(int i = 4; i <= 50; i++)
        {
            a[i][0] = a[i-1][0] + a[i-2][0] + a[i-1][1] + a[i-2][1];
            a[i][1] = a[i-3][0];
        }
        while(~scanf("%d",&n))
        {
            printf("%lld
    ",a[n][0] + a[n][1]);
        }
        return 0;
    }

    不那么容易想的代码

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    long long n,a[51];
    int main()
    {
        a[1]= 1;
        a[2]= 2;
        a[3]= 4;
        a[4] = 7;
        a[5] = 13;
        for(int i = 6; i <= 50; i++)
        {
            a[i] = a[i-1] + a[i-2] + a[i-4] + a[i-5];
        }
        while(~scanf("%d",&n))
        {
            printf("%lld
    ",a[n]);
        }
        return 0;
    }
  • 相关阅读:
    【2021-01-07】叫我“何工”就好
    2021年的 目标计划
    转:我在拼多多的三年 https://www.leadroyal.cn/?p=1228#more-1228
    匀强电场等效重力场
    开源图片素材管理软件-civet
    心学#传习录学习
    工作感受月记202101月
    统计字典序元音字符的数量
    可被5整除的二进制
    假期刷题--JAVA
  • 原文地址:https://www.cnblogs.com/kubab119/p/11823330.html
Copyright © 2011-2022 走看看