蜜蜂寻路

来源:互联网 发布:python相关性分析p值 编辑:程序博客网 时间:2024/04/28 07:19

前言

牛客网PAT乙级训练1009

题目描述

nowcoder利用业余时间养了一窝蜜蜂,因为空间比较小,蜂房只有两排,如下图所示:

如你所见,蜜蜂的蜂房是正六边形,假设蜜蜂只会从左往右爬,即从1号蜂房能爬到2号和3号;从6号蜂房能爬到7号和8号……
现给出两个蜂房的编号a和b,要求计算蜂房a的蜜蜂爬到蜂房b有几条不同路线。

输入描述

  1. 输入的第一行是一个整数n
  2. 接下来n行数据,每行一组测试用例
  3. 每组测试用例包含两个正整数a和b,(0 < a < b < 2^31)

输出描述

每组用例的结果单独输出一行。输出数据结果范围是 [0, 2^63)。

输入例子

3
1 2
3 6
99 100

输出例子

1
3
1

解析

还是老问题,解决方案参考骨牌铺方格

解决方案

以下是本题的其中一个解法:

import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        while (scanner.hasNext()) {            int t = scanner.nextInt();            for (int k = 0; k < t; k++) {                int x = scanner.nextInt();                int y = scanner.nextInt();                System.out.println(getRes(x, y));            }        }    }    private static long getRes(int x, int y) {        int N = y - x + 1;        if (N <= 2)            return 1;        long[] dp = new long[N + 1];        dp[1] = 1;        dp[2] = 1;        for (int i = 3; i <= N; i++)            dp[i] = (dp[i - 2] + dp[i - 1]);        return dp[N];    }}
原创粉丝点击