P
O
L
Y
G
O
N

蓝桥杯—校内模拟赛(规律序列)

蓝桥杯—校内模拟赛(规律序列)

问题描述:

  小明想知道,满足以下条件的正整数序列的数量:

  1. 第一项为 n;

  2. 第二项不超过 n;

  3. 从第三项开始,每一项小于前两项的差的绝对值。

  请计算,对于给定的 n,有多少种满足条件的序列。

输入格式:

  输入一行包含一个整数 n。

输出格式:

  输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。

样例输入:

  4

样例输出:

  7

样例说明:

以下是满足条件的序列:
  4 1
  4 1 1
  4 1 2
  4 2
  4 2 1
  4 3
  4 4

评测用例规模与约定:

  对于 20% 的评测用例,1 <= n <= 5;
  对于 50% 的评测用例,1 <= n <= 10;
  对于 80% 的评测用例,1 <= n <= 100;
  对于所有评测用例,1 <= n <= 1000。

思路:

  ① 研究对象始终都是只有三项,所以用大小为3的数组用来存放研究的三个对象。——序列长度未知,所以考虑递归的思想。

  ② 第一项、第二项的确定规则和第三项和后面的确定规则不同,观察得出,长度只有2的序列只有n(输入的第一项n)个。

注:

由于不知道具体测试用例数据,所以本人也无法确定答案是否完全正确。自己手动算出1——5的数据输入,测试出答案正确。

但是根据题目给出的评测用例规模和约定。

当输入数据较大时,本答案会超时。

如果有大神做出完美答案,拜托评论留下。

 1 import java.util.Scanner;
 2 
 3 public class Main{
 4     static int n,out;
 5     public static void main(String[] args) {
 6         Scanner scan = new Scanner(System.in);
 7         n = scan.nextInt();
 8         out = 0;
 9         int[] arr = new int[3];                //arr用于存放一直变化的长度为3的序列研究对象
10         arr[0] = n;
11         for(int i = 1; i <= n; i++) {
12             arr[1] = i;
13             f(arr[0], arr[1]);
14         }
15         System.out.println((out+n)%10000);        //加上的n是,序列长度为2的所有序列数量。
16         scan.close();
17         }
18     private static void f(int arr0, int arr1) {
19         // TODO Auto-generated method stub
20         for(int i = 1; i <= n; i++) {
21             if(i < cha(arr0,arr1)) {
22                 int arr2= i;
23                 f(arr1,arr2);
24                 out++; 
25             }
26         }
27     }
28     private static int cha(int i, int j) {    //返回绝对值
29         // TODO Auto-generated method stub
30         if(i>j) return i-j;
31         else return j-i;
32     }
33 }

 _____________________

输入:3    输出:4  

满足条件的序列:       

3 1          

3 1 1        

3 2          

3 3          

———————————

输入:5    输出:14

满足条件的序列:       

5 1

5 1 1

5 1 5

5 1 3

5 1 3 1

5 1 3 1 1

5 2

5 2 1

5 2 2

5 3

5 3 1

5 3 1 1

5 4

5 5          

———————————

 

posted @ 2020-03-14 17:01  polygon  阅读(3176)  评论(1编辑  收藏  举报