• ECNU 3531 定西


    ECNU 3531 定西

    链接

    https://acm.ecnu.edu.cn/problem/3531

    题目

    单点时限: 1.0 sec

    内存限制: 256 MB

    这么多年你一个人一直在走
    方向和天气的节奏会让你忧愁
    你说你遇见了一大堆奇怪的人
    他们看上去好像都比你开心
    ——李志《定西》

    这首歌的吉他节奏总感觉是在致敬《加州旅馆》,前奏又像葫芦娃里面在蛇精洞是的配乐

    一个人走走了很多年,发现自己走到了一个很长的,年久失修的楼梯面前。年久失修的意思就是,有 个台阶坏了,没法走。

    楼梯一共有 n 层,你一次能上一阶、两阶或三阶台阶,请问,你从楼梯底部 (0 开始) 走到楼梯顶部,共有多少种走法。

    输入格式
    输入数据共两行,第一行包含两个自然数 n () 和 k (),第二行包含 k 个自然数 (),数字之间用一个空格隔开,表示损坏的台阶的序号(从楼梯底部到楼梯顶部,台阶序号依次为 1 到 n)。

    输出格式
    输出数据仅包含一个整数,表示所有可行走法的总数。

    样例
    input
    5 2
    2 4
    output
    2

    思路

    常见的dp问题,并不算难,就是需要考虑到特殊情况。
    首先特判一下,如果第n层坏了,直接输出0,到不了、
    之后若n<=3,分别判断,在上面我已经把不可能到的当做0,所以可以直接加法。
    之后就是状态转移方程,a[i + 1] = a[i] + a[i - 1] + a[i - 2]考虑一下边界值即可。

    代码

    public static void fun() {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a = new int[n + 1];
        int k = sc.nextInt();
        for (int i = 0; i <= n; i++) {
          a[i] = 1;
        }
        for (int i = 0; i < k; i++) {
          int temp = sc.nextInt();
          a[temp] = 0;
        }
        if (a[n] == 0) {
          System.out.print(0);
        } else if (n <= 3) {
          int sum = 0;
          if (n == 1) {
            sum = a[1];
          } else if (n == 2) {
            sum = a[1] + a[2];
          } else {
            sum = a[1] + a[1] + a[2] + a[3];
          }
          System.out.print(sum);
        } else {
          if (a[1] != 0) {
            a[1] = 1;
          }
          if (a[2] != 0) {
            a[2] = a[1] + 1;
          }
          if (a[3] != 0) {
            a[3] = a[2] + a[1] + 1;
          }
          for (int i = 3; i < n; i++) {
            if (a[i + 1] != 0) {
              a[i + 1] = a[i] + a[i - 1] + a[i - 2];
            }
          }
          System.out.print(a[n]);
        }
      }
    
  • 相关阅读:
    python上selenium的弹框操作
    python中selenuim模块定位方法详解
    python中Selenium模块的安装与简单使用(详细)
    postman测试用例做断言
    postman写测试用例
    python之单元测试及unittest框架的使用
    spring boot mybatis redis缓存
    web插件
    jQuery事件
    C++对象动态内存
  • 原文地址:https://www.cnblogs.com/blogxjc/p/14310471.html
Copyright © 2020-2023  润新知