題記 序列計數 藍橋杯

2021-10-05 05:00:40 字數 1121 閱讀 8061

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

第一項為 n;

第二項不超過 n;

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

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

【輸入格式】

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

【輸出格式】

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

【樣例輸入】

4【樣例輸出】

7【樣例說明】

以下是滿足條件的序列:41

4114

1242

4214

344【評測用例規模與約定】

對於 20

% 的評測用例,1

<= n <=

5;對於 50

% 的評測用例,1

<= n <=

10;對於 80

% 的評測用例,1

<= n <=

100;

對於所有評測用例,1

<= n <=

1000。

思路:記憶化遞迴

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

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

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

由此得出**:

#include

#include

int hx[

1001][

1001]=

;long

long

intdfs

(int old,

int now )

intmain()

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

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

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

題記 序列計數 藍橋杯

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

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

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

藍橋 序列計數

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