序列計數(記憶化搜尋)(C )

2021-10-08 06:12:02 字數 819 閱讀 8684

【問題描述】

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

第一項為 n;

第二項不超過 n;

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

請計算,對於給定的 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。

#include

#include

#include

#include

using

namespace std;

int n;

int date[

1005][

1005];

intdfs

(int a,

int b,

int ab)

void

print()

cout << endl;}}

intmain()

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

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

記憶化搜尋

演算法上依然是搜尋的流程,但是搜尋到的一些解用 動態規劃 的那種思想和模式作一些儲存。一般說來,動態規劃總要遍歷所有的狀態,而搜尋可以排除一些無效狀態。更重要的是搜尋還可以剪枝,可能剪去大量不必要的狀態,因此在空間開銷上往往比動態規劃要低很多。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求...

記憶化搜尋

記憶化搜尋 演算法上依然是搜尋的流程,但是搜尋到的一些解用動態規劃的那種思想和模式作一些儲存。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求解乙個狀態,就將它的解儲存下來,以後再次遇到這個狀態的時候,就不必重新求解了。例1.題目描述 給從左至右排好隊的小朋友們分糖果,要求 1.每個小朋友都...