藍橋杯—校內模擬賽(規律序列)


藍橋杯—校內模擬賽(規律序列)

問題描述:

  小明想知道,滿足以下條件的正整數序列的數量:

  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          

———————————

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM