題記 序列計數 藍橋杯

2021-10-07 04:17:15 字數 1072 閱讀 6556

【問題描述】

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

1. 第一項為 n;

2. 第二項不超過 n;

3. 從第三項開始,每一項小於前兩項的差的絕對值。

請計算,對於給定的 n,有多少種滿足條件的序列。

【輸入格式】

輸入一行包含乙個整數 n。

【輸出格式】

輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。

【樣例輸入】

4【樣例輸出】

7【樣例說明】

以下是滿足條件的序列:

4 14 1 1

4 1 2

4 24 2 1

4 34 4

【評測用例規模與約定】

對於 20% 的評測用例,1 <= n <= 5;

對於 50% 的評測用例,1 <= n <= 10;

對於 80% 的評測用例,1 <= n <= 100;

對於所有評測用例,1 <= n <= 1000。

思路:記憶化遞迴

從題目第三點可以得出遞迴公式:

f(old,now)的意思是一old為之前的元素,now為當前的元素的序列總和。

f(old,now) = f(now, 1) + .... + f(now,|old-now|-1) + 1;

由此我們根據2,3條件得出:f(old,now)的序列總和 = 1 + f( old, now -1 ) + f( now, | old - now | - 1 );

由此得出**(c):

#include #include 

int hx[1001][1001] = ;

long

long

int dfs( int old, int

now )

intmain()

//從第三項開始,符合遞迴式:

//f(old,now) = f(now, 1) + .... + f(now,|old-now|-1) + 1;

//★從1到old和now的絕對值-1 在加上自己

2020-03-25-20:57:01

題記 序列計數 藍橋杯

小明想知道,滿足以下條件的正整數序列的數量 第一項為 n 第二項不超過 n 從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 輸入一行包含乙個整數 n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。樣例輸入 4 樣...

藍橋杯 序列計數 記憶化搜尋

問題描述 小明想知道,滿足以下條件的正整數序列的數量 1.第一項為 n 2.第二項不超過 n 3.從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 輸入一行包含乙個整數 n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的...

藍橋 序列計數

問題描述 小明想知道,滿足以下條件的正整數序列的數量 1.第一項為 n 2.第二項不超過 n 3.從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 輸入一行包含乙個整數 n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的...